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
- 如图,编译通过。
-
![]()

浙公网安备 33010602011771号