gpt4 book ai didi

assembly - x86 上有偏移写回吗?

转载 作者:行者123 更新时间:2023-12-02 04:59:01 25 4
gpt4 key购买 nike

使用 ARM 我可以像这样访问内存位置:

LDR r0, [r1, #4]!

意思是我想加载 r1 指向的值,偏移量为 4 个字节,并且 !意味着我希望在此指令后使用新值(即 +4)更新 r1 的值。

在 x86 上是否有等效项(如果可能的话,AT&T 语法)?例如:

movl 4(%ebx), %eax

这会将 %ebx 指向的值加载到 %eax 中,偏移量为 4 个字节。我如何在加载后更新 %ebx 的值?

谢谢。

最佳答案

我认为您要查找的说明是 LODSD这意味着“从字符串中加载 DWORD”。但是您不能选择寄存器:指针在 ESI 中,目标寄存器是 EAX

After the byte, word, or doubleword is transferred from the memory location into the AL, AX, or EAX register, the (E)SI register is incremented or decremented automati- cally according to the setting of the DF flag in the EFLAGS register. (If the DF flag is 0, the (E)SI register is incremented; if the DF flag is 1, the ESI register is decre- mented.) The (E)SI register is incremented or decremented by 1 for byte operations, by 2 for word operations, or by 4 for doubleword operations.

抱歉,我脑子里现在已经有了根深蒂固的 Intex 语法。假设平面 32 位保护模式:

mov   esi, _source_data_       ; ESI points to source data
cld ; Clear the direction flag
; (ESI will increment)
lodsd ; Essentially mov eax, [ds:esi]
; add esi, 4

关于assembly - x86 上有偏移写回吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17437432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com