gpt4 book ai didi

assembly - x86 上有偏移写回吗?

转载 作者:行者123 更新时间:2023-12-02 21:57:55 26 4
gpt4 key购买 nike

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

LDR r0, [r1, #4]!

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

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

movl 4(%ebx), %eax

这会将 %ebx 所指向的值(偏移量为 4 个字节)加载到 %eax 中。加载后如何更新 %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/

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