Mikro Step
Kıdemli Üye
- Katılım
- 25 Eylül 2022
- Mesajlar
- 6,620
Bu komutlari faydali bir iste kullanmak istiyorum fakat olayi tam kavrayamadim.
Cok cekirdekli islemciler beni ilgilendirmiyor ve tek cekirdekte bu komutu kullanmak istiyorum.
CLREX isletildiginde senkronizasyonu bozuyor.
LDREX R1, [Adres] ; ile Adresdeki veriyi okuyoruz. Ardindan
....
....
STREX R0, R2, [Adres] ; Adrese R2 icerigini yaziyoruz.
Eger bu yazma islemi sonucunda R0=0 olduysa islem basarili, 1 olduysa hata var anlamina geliyor.
LDREX ardindan STREX kullaninca zaten hata olusmuyor.
Tamam adamlar boyle bir mekanizma kurmuslar.
Fakat LDREX ile okudugum adresden farkli bir adrese STREX ile erisim yaparsam da sonuc basarili oluyor.
Yani basarili olmak icin LDREX ardindan STREX isletmek yeterli. Adresin ayni olup olmamasi onemli degil. Hatta dokumanlarda yazilanin aksine okuma ve yazma komutlarinin ayni boyutta veri islemesi de onemli degil. (Byte okuduysan byte yaz, word okuduysan word yaza da gerek yok)
STREX ardindan bir daha STREX isletirsek hata aliyoruz.
Ya da LDREX CLREX STREX dizilimi da hataya neden oluyor.
Dolayisi ile bu 3 lu komutu cok ise yarar bulmadim ve faydali bir amac icin kullanamiyorum.
Anladigim kadariyla bir flag var. Hedef adresden okunacak yada yazilacak veriyi dusunmezsek,
LDREX bu flagi temizliyor.
CLREX flagi set ediyor.
STREX Flag temiz ise gozleme registerine 0, flag set ise gozleme registerine 1 atiyor. Flagi tekrar set ediyor.
Tamam da bunlarla nerede nasil ise yarar bir kod yazabiliriz?
Cok cekirdekli islemciler beni ilgilendirmiyor ve tek cekirdekte bu komutu kullanmak istiyorum.
CLREX isletildiginde senkronizasyonu bozuyor.
LDREX R1, [Adres] ; ile Adresdeki veriyi okuyoruz. Ardindan
....
....
STREX R0, R2, [Adres] ; Adrese R2 icerigini yaziyoruz.
Eger bu yazma islemi sonucunda R0=0 olduysa islem basarili, 1 olduysa hata var anlamina geliyor.
LDREX ardindan STREX kullaninca zaten hata olusmuyor.
Tamam adamlar boyle bir mekanizma kurmuslar.
Fakat LDREX ile okudugum adresden farkli bir adrese STREX ile erisim yaparsam da sonuc basarili oluyor.
Yani basarili olmak icin LDREX ardindan STREX isletmek yeterli. Adresin ayni olup olmamasi onemli degil. Hatta dokumanlarda yazilanin aksine okuma ve yazma komutlarinin ayni boyutta veri islemesi de onemli degil. (Byte okuduysan byte yaz, word okuduysan word yaza da gerek yok)
STREX ardindan bir daha STREX isletirsek hata aliyoruz.
Ya da LDREX CLREX STREX dizilimi da hataya neden oluyor.
Dolayisi ile bu 3 lu komutu cok ise yarar bulmadim ve faydali bir amac icin kullanamiyorum.
Anladigim kadariyla bir flag var. Hedef adresden okunacak yada yazilacak veriyi dusunmezsek,
LDREX bu flagi temizliyor.
CLREX flagi set ediyor.
STREX Flag temiz ise gozleme registerine 0, flag set ise gozleme registerine 1 atiyor. Flagi tekrar set ediyor.
Tamam da bunlarla nerede nasil ise yarar bir kod yazabiliriz?