我正在尝试为UNIX编译我的第一个Assembler程序,但是会遇到很多错误。例如,这段代码(希望从键盘读取和写入一个数字)给了我"分段错误"消息:
.data
.code32
printf_format:
.string "%d\n"
scanf_format:
.string "%d"
number:
.space 4
.text
.globl main
main:
pushl $number
pushl $scanf_format
call scanf
addl $8, %esp
pushl number
pushl $printf_format
call printf
addl $8, %esp
movl $0, %eax
ret
答案 0 :(得分:1)
如果使用gcc -m32 example.s
编译它,您的示例可以正常工作。如果使用GAS / LD组合,则无法使用ret
终止它。改为使用:
pushl $0
call exit