• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

bihu3637

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

AT&T汇编语言学习-20250514(32位汇编报错-Error: invalid instruction suffix for `push'or 'pop'

摘要:学习《programming from the ground up》2003年版本 ,2014年中文版(郭晴霞译),

借鉴https://blog.csdn.net/jackailson/article/details/82192273,里面的评论给出的解决方案以及https://blog.csdn.net/zhaopeng01zp/article/details/123046127

  • 1.page 40:代码中“#将第一个参数放入%eax”,应更正为“#将第一个参数放入%ebx“,英文原版也有此问题,需要更正;
  • 2.我的编译环境:Ubuntu 22.04 x86_64,在终端中执行命令: as -o power.s power.o ,编译后,如题报错:

  • 3.原因:64位和32位系统中,as指令对于某些汇编指令的支持解读不一样。
  • 4.解决方法:命令64位系统按照32位去汇编与链接,分别用 as -32 以及 ld -m elf_i386 在终端执行代码:
    1 as -32 power.s -o power.o
    2 ld -m elf_i386 power.o -o power
  • 如图,编译通过。
  •  

posted on 2025-05-14 22:21  bihu3637  阅读(64)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3