嗨我只是在64位汇编中玩,但我的编译器一直在抛出:(13:操作码和操作数的无效组合)任何人都可以解释为什么会发生这种情况谢谢。
10: myfunc:
11: mov rax, rcx
12: xor rdx, rdx
13: idiv 10
14: mov rax, rdx
15: ret
对于不阅读汇编的人来说,这类似于:
int myfunc(int a)
{
return a % 10;
}
答案 0 :(得分:1)
idiv操作不会立即将值作为操作数,以下代码将按预期工作。
10: myfunc:
11: mov rax, rcx
12: xor rdx, rdx
13: mov rbx, 10
14: idiv rbx
15: mov rax, rdx
16: ret