X86:寻址方式——寄存器值改变

X86: addressing mode - register value change

这可能很愚蠢,但对这些类型的说明有一点疑问:

MOV EBX,dword ptr [RAX + 0x28]

这会改变 RAX 的值吗?类似于:

RAX + 0x28指向的值移动到EBX中,然后添加Add RAX, 0x28。那么,简而言之,这个操作后RAX的值是否发生变化?

不,它使用 RAX 的值,不会更改它。

这就像有一个 C 表达式 i + 1。这不会更改 i 的值,它只会使用它。你所描述的就像表达式 i += 1.

不,与 ARM 或 PowerPC 不同,x86 没有任何将有效地址写回基址寄存器的寻址模式。

也没有像 m68k 这样的显式 pre/post inc/dec 寻址模式。 (push/pop 和 movs/stos/lods/等具有 隐式 increment/decrement 寻址 built-in , 对于 RSP 或 RDI/RSI.)