在汇编中注册

问题描述 投票:0回答:1

以下指令有什么问题: movb $0xF, (%ebx) 答案指出%ebx不能用作地址寄存器。我是装配新手,有人可以解释一下这意味着什么吗?

如果指令是 movb $0xF, (%rbx) 那是否有效?另外,地址寄存器到底是什么?最后,在寄存器周围写括号是否直接引用寄存器指向的内存位置?

assembly x86-64 cpu-registers addressing-mode
1个回答
0
投票

没有任何问题

movb $0xf, (%ebx)
1

即使在 64 位模式下,它本身也很好。当然x32程序不会介意使用它,并且

r/e/bx
当然可以用作基址寄存器(事实上
bx
是少数可以在16位模式下充当基址的原始寄存器之一)。

我的建议是找到更好的学习来源。


1,在 64 位和 16 位模式下正确组装为

67 C6 03 0F
,在 32 位模式下没有地址大小覆盖字节 (
67
)。

© www.soinside.com 2019 - 2024. All rights reserved.