【发布时间】:2019-07-23 19:45:45
【问题描述】:
这可能很愚蠢,但对这些类型的指令有一点疑问:
MOV EBX,dword ptr [RAX + 0x28]
这会改变RAX 的值吗?比如:
将RAX + 0x28指向的值移动到EBX中,然后加上Add RAX, 0x28。那么,简而言之,这次操作后RAX的值会发生变化吗?
【问题讨论】:
标签: assembly x86-64 addressing-mode
这可能很愚蠢,但对这些类型的指令有一点疑问:
MOV EBX,dword ptr [RAX + 0x28]
这会改变RAX 的值吗?比如:
将RAX + 0x28指向的值移动到EBX中,然后加上Add RAX, 0x28。那么,简而言之,这次操作后RAX的值会发生变化吗?
【问题讨论】:
标签: assembly x86-64 addressing-mode
不,它使用RAX的值,它不会改变它。
这就像有一个 C 表达式 i + 1。这不会改变i 的值,它只会使用它。您描述的内容类似于表达式i += 1。
【讨论】:
不,与 ARM 或 PowerPC 不同,x86 没有将有效地址写回基址寄存器的任何寻址模式。
也没有像 m68k 这样的显式前/后 inc/dec 寻址模式。 (push/pop 和 movs/stos/lods/etc. 有 implicit 内置递增/递减寻址,用于 RSP 或 RDI/RSI。)
【讨论】: