in - gcc 内联汇编的操作数类型不匹配
Operand type mismatch for in - gcc inline assembly
我有一些 C 代码在内联汇编中使用了 inb 指令。我听说 inb 接受大小为 8 位的操作数。 AL 和 DL 是 8 位,为什么这行不通?
__asm__ __volatile__("inb %al, %dl");
它说 "Operand type mismatch for in"。如果重要的话,我在顶部有“.code16gcc”。
感谢所有帮助。
两件事:在 AT&T 风格的汇编中,目标操作数在最后,即使数据是 8 位,端口号也是 16 位。所以:
inb %dx, %al
我有一些 C 代码在内联汇编中使用了 inb 指令。我听说 inb 接受大小为 8 位的操作数。 AL 和 DL 是 8 位,为什么这行不通?
__asm__ __volatile__("inb %al, %dl");
它说 "Operand type mismatch for in"。如果重要的话,我在顶部有“.code16gcc”。 感谢所有帮助。
两件事:在 AT&T 风格的汇编中,目标操作数在最后,即使数据是 8 位,端口号也是 16 位。所以:
inb %dx, %al