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.)
这可能很愚蠢,但对这些类型的说明有一点疑问:
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.)