【发布时间】:2011-12-06 06:45:00
【问题描述】:
我目前正在编写一个生成 x86-32 代码的编译器。
但是,我在尝试执行除法时遇到了问题。
idivl %ecx, %ebx
这段代码给了我以下错误:
Error: operand type mismatch for `idiv'
有人知道为什么吗?以上几行是idiv 唯一一次出现在我的代码中。
【问题讨论】:
-
我可能错了,但
idiv不是单操作数指令吗? -
@Mysticial - 是的,它计算
edx:eax / r32,其中edx:eax是edx和eax的按位连接以形成64 位值,r32是任何32 位寄存器或指针。结果放在eax中,其余的放在edx中。