错误:“in”的操作数类型不匹配
生成此项的行是:
inb%%eax,%%edx
我试过这个:
inb%%eax,$0x00000064

inb%%eax,$0x64
没有改变输出。我也试过用“in”代替“inb”,但现在我在黑暗中拍摄。
有什么想法吗?

最佳答案

“inb”表示对大小为字节(8位)的操作数执行助记符命令“in”。inw代表单词(16位),inl代表长单词(32位),inq代表quad(在64位机器上)。%eax寄存器是32位的,由%ax(16位)组成。%ax寄存器依次由高8位(ah)和低8位(al)组成。因此,如果要使用“inb”,则应使用%al或%ah,例如。,

inb %%al, %%dl # from source %%al 8-bit to destination %%dl 8-bit.

要将“in”与%eax一起使用,需要将“l”附加到命令中(或者省略字母,因为某些编译器可以推断类型)。也就是说,
inl %%eax, %%edx

应该很好。

08-17 23:29