assembly 32-位寄存器在64位程序集中的寻址模式不允许?

qmelpv7a  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(92)

下面的指令有什么错:

movb $0xF, (%ebx)

答案指出%ebx不能用作地址寄存器。我是新手,有人能解释一下这是什么意思吗?
如果指令是movb $0xF, (%rbx),它是否有效?地址寄存器到底是什么?最后,在寄存器周围写括号是否直接指向寄存器所指向的内存位置?

doinxwow

doinxwow1#

movb $0xf, (%ebx) 1没有错。
即使在64位模式下,它的罚款每sè。当然x32 programs不会介意使用它,r/e/bx当然可以用作基址寄存器(事实上,bx是少数几个可以在16位模式下用作基址的原始寄存器之一)。
我的建议是找到一个更好的学习来源。
1,在64位和16位模式下正确组装为67 C6 03 0F,在32位模式下没有地址大小覆盖字节(67)。

相关问题