首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于绝对内存寻址的gcc汇编语言

关于绝对内存寻址的gcc汇编语言
EN

Stack Overflow用户
提问于 2012-06-16 21:09:33
回答 2查看 1.6K关注 0票数 0

我使用的机器是64位的,我写了这样的汇编代码:

代码语言:javascript
复制
movl $0x12e48ead 0x0804b324
pushl $0x08049103
ret

使用AT&T格式。当我使用命令行进行编译时:

代码语言:javascript
复制
gcc -m32 -c firecracker.S

它会显示以下错误:

代码语言:javascript
复制
firecracker.S: Assembler messages:
firecracker.S:1: Error: junk `0x0804b324' after expression
firecracker.S:1: Error: suffix or operands invalid for `mov'

我想知道为什么会发生这种情况。有人能帮我吗?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-16 21:13:34

您缺少一个逗号:

代码语言:javascript
复制
movl $0x12e48ead, 0x0804b324
pushl $0x08049103
ret

构建良好。

票数 0
EN

Stack Overflow用户

发布于 2012-06-16 21:13:22

这看起来像是语法错误- mov的语法是:

代码语言:javascript
复制
movl $sourceaddr, $destaddr

注意逗号和美元符号!当然,sourceaddr和destaddr也可以是寄存器。

64位的机器应该不会有什么不同,因为您已经指定了-m32,它将汇编在32位平台上运行的代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11063700

复制
相关文章

相似问题

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