第一个汇编程序
First assembler program
我正在尝试为 UNIX 编译我的第一个汇编程序,但出现了很多错误。例如,此代码(预期从键盘读取和写入数字)给我 "Segmentation fault" 消息:
.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 , %esp
pushl number
pushl $printf_format
call printf
addl , %esp
movl [=10=], %eax
ret
如果您使用 gcc -m32 example.s
编译您的示例,则它工作正常。如果使用 GAS/LD-combination,则不能使用 ret
终止它。改用:
pushl [=10=]
call exit
我正在尝试为 UNIX 编译我的第一个汇编程序,但出现了很多错误。例如,此代码(预期从键盘读取和写入数字)给我 "Segmentation fault" 消息:
.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 , %esp
pushl number
pushl $printf_format
call printf
addl , %esp
movl [=10=], %eax
ret
如果您使用 gcc -m32 example.s
编译您的示例,则它工作正常。如果使用 GAS/LD-combination,则不能使用 ret
终止它。改用:
pushl [=10=]
call exit