首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么mov eax,val不等于mov $val,%eax的英特尔语法?

为什么mov eax,val不等于mov $val,%eax的英特尔语法?
EN

Stack Overflow用户
提问于 2017-09-09 14:59:07
回答 1查看 417关注 0票数 4

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

我有两个档案,智囊团:

代码语言:javascript
复制
.intel_syntax noprefix

val:
    mov eax, val

和atandt.s:

代码语言:javascript
复制
val:
    mov $val, %eax

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

代码语言:javascript
复制
$ 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

代码语言:javascript
复制
$ 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

他们为什么不一样?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-09 15:04:13

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

代码语言:javascript
复制
    mov eax, offset val
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46131951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档