gpt4 book ai didi

assembly - 为什么 mov eax,val 不是 mov $val,%eax 的英特尔语法等效项?

转载 作者:行者123 更新时间:2023-12-02 19:59:44 27 4
gpt4 key购买 nike

我试图理解 Intel 语法和 AT&T 语法之间的差异(我使用 GNU as)。

我有两个文件,intel.s:

.intel_syntax noprefix

val:
mov eax, val

和 atandt.s:

val:
mov $val, %eax

我正在尝试将 AT&T 版本转换为 Intel 版本。但我得到了不同的结果:

$ objdump -d intel.o

intel.o: file format elf32-i386


Disassembly of section .text:

00000000 <val>:
0: a1 00 00 00 00 mov 0x0,%eax

$ objdump -d atandt.o

atandt.o: file format elf32-i386


Disassembly of section .text:

00000000 <val>:
0: b8 00 00 00 00 mov $0x0,%eax

为什么它们不同?

最佳答案

Intel指令加载val的内容。要加载其地址,请使用

    mov eax, offset val

关于assembly - 为什么 mov eax,val 不是 mov $val,%eax 的英特尔语法等效项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46131951/

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