【问题标题】:X86: addressing mode - register value changeX86:寻址方式——寄存器值变化
【发布时间】: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


    【解决方案1】:

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

    这就像有一个 C 表达式 i + 1。这不会改变i 的值,它只会使用它。您描述的内容类似于表达式i += 1

    【讨论】:

      【解决方案2】:

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

      也没有像 m68k 这样的显式前/后 inc/dec 寻址模式。 (push/pop 和 movs/stos/lods/etc. 有 implicit 内置递增/递减寻址,用于 RSP 或 RDI/RSI。)

      【讨论】:

        猜你喜欢
        • 2011-11-07
        • 1970-01-01
        • 2012-05-11
        • 2017-01-03
        • 2012-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多