gpt4 book ai didi

assembly - at&t 汇编语法中带 $ 或不带 $ 符号的数字有什么区别?

转载 作者:行者123 更新时间:2023-12-02 19:00:39 24 4
gpt4 key购买 nike

假设 .data 部分有以下项目:

0x1234 00010203 04050607 08090a0b 0c0d0e0f
0x1238 10000000

在代码中,

mov $0x1234, %eax
mov 0x1238, %ebx

我相信使用 $ 符号,它将是常数,因此 %eax 将具有内存地址,但是 %ebx 呢?

两条指令到底有什么不同?

最佳答案

区别在于,使用 $ 时,它是数值,而没有 $ 时,它是该地址处的内存内容

If argument of instruction is without any special marker (such as % for register or $ for numeric constant), then it is memory access. So following:

movl 10, %eax
movl foo, %eax

Corresponds to intel syntax:

mov eax, [10]
mov eax, [foo]

To use numeric constant, or use address of label, there is $ operator:

movl $10, %eax
movl $foo, %eax

In Intel syntax:

mov eax, 10
mov eax, offset foo

http://x86asm.net/articles/what-i-dislike-about-gas/

关于assembly - at&t 汇编语法中带 $ 或不带 $ 符号的数字有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18996870/

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