汇编代码 编译出现-invalid instruction suffix for push
<p style="text-indent: 2em;">最近在阅读《<span style="color: rgb(0, 112, 192);">Linux内核完全注释</span>》这本书,试图多了解Linux内核的运行过程。书中当然也涉及到汇编代码的编写。这本书的阅读笔记,应该会在后面陆续的发布,敬请期待吧<img src="/UEditor/dialogs/emotion/images/face/i_f01.gif"/>。</p><p style="text-indent: 2em;">在Linux系统中,使用AT&T语法编写汇编代码时,遇到了一个问题,就是编译代码时会出现问题:"<span style="color: rgb(255, 0, 0);">invalid instruction suffix for push</span>"。</p><p style="text-indent: 2em;">我的编译环境:<span style="color: rgb(0, 112, 192);">Ubuntu 14.04 x86_64</span>,在终端中执行命令:<span style="color: rgb(255, 0, 0);">as -o callee.o callee.s</span>,此时就出现了错误提示:<span style="color: rgb(255, 0, 0);">invalid instruction suffix for push</span>,截图如下:</p><p style="text-align:center"><img src="/uploads/AilsonJack/2018.08.29/1535530758319558.png" onclick="preview_image('/uploads/AilsonJack/2018.08.29/1535530758319558.png')"/></p><p style="text-indent: 2em;">错误原因是,在64位系统和32位系统的as命令对于某些汇编指令的处理支持不一样造成的。在文件<span style="color: rgb(0, 112, 192);">callee.s</span>中,包含指令:<span style="color: rgb(0, 112, 192);">pushl %ebp</span>,该指令在64位系统下就编译不过。</p><p style="text-indent: 2em;">解决方法:在<span style="color: rgb(0, 112, 192);">callee.s</span>中,在代码头部添加<span style="color: rgb(0, 112, 192);">.code32</span>即可:</p><p style="text-align:center"><img src="/uploads/AilsonJack/2018.08.29/1535530771721589.png" onclick="preview_image('/uploads/AilsonJack/2018.08.29/1535530771721589.png')"/></p><p style="text-indent: 2em;">然后再次编译该汇编文件,编译顺利通过。如果还有其他的问题,欢迎留言讨论。<br/></p>
暂无评论,要不要来个沙发
发表评论
JLink V9掉固件修复(灯不亮) 3Zephyr笔记2 - 在STM32F429上运行HelloWorld 2计算NandFlash要传入的行地址和列地址 1Linux MMC子系统 - 6.eMMC 5.1工作模式-设备识别模式 0Linux MMC子系统 - 5.eMMC 5.1工作模式-引导模式 0Linux MMC子系统 - 4.eMMC 5.1常用命令说明(2) 0
标签云
Linux嵌入式实用技巧ARM内核学习问题集合CC++编程语言阅读笔记汇编Linux内核完全注释Windows驱动开发计算机基础ARM11ARMv7-ASTM32IDESublimeLinux内核学习eMMCMMC子系统Ubuntu操作系统OfficeVMWareAPUEgccRTOS中断漫游世界随笔感悟开发工具软件应用编程VsCodearmccarmclang编译器ZephyrSPIJLink网卡驱动安装各种芯片库函数NFSμCOS内核sambaFlashUnix命令与脚本输入法Linux内核设计与实现gitRIFFWAVJATGFTPar8161安装centos有线上网μCGUI字库工程建立右键菜单网络文件系统Firefox百度NTFS文件系统CodeBlocksCentOS数据结构算法PhotoShop51KeilQTUltraEditscanfglibc宏定义UIDGID优先级娱乐天地SourceInsight磁盘扇区总线I2CPDFBComparePythonI2SFPUMakefileSWDCPUARP软件推荐FileZilla