Assembly '%al' not allowed with 'inw' hatası

mrht1234

Hectopat
Katılım
3 Aralık 2020
Mesajlar
1.273
Çözümler
4
Yer
Edirne/Merkez
Daha fazla  
Cinsiyet
Erkek
Assembly %al not allowed inw hatası alıyorum çözümü nedir hatayla ilgili ekran görüntüsü ve hataya sebep olan kodu paylaşıyorum:

[CODE lang="cpp" title="Hataya Neden olan Kod"]__asm__ volatile("inw %1, %0" : "=a" (result) : "Nd" (portnumber));[/CODE]

@bitwise
@TerabyteForever
@Enes3078

Hata.png

@The Anorak.
Hatanın çözümü:

[CODE lang="cpp" title="Hatayı Çözen Kod" highlight="1-2"] uint16_t result;
__asm__ volatile("inw %1, %0" : "=a" (result) : "Nd" (portnumber));[/CODE]

16bit işleneler inw çalışır benim hatam 8 bit işlenenlere inw vermemdi.
 
Son düzenleme:
Daha iyi açıklayayım, anlamayan kişiler olacaktır: x86'daki "inw" komutu "word" boyutunda (16 bit veriler halinde) veriler okur. "AL" register'ı da (modern işlemcilerde A register'ının 8 bitlik bölümünü ifade eder) 8 bitlik veri tutar, bu yüzden derleyici hata veriyor.
 

Yeni konular

Geri
Yukarı