我正在英特尔处理器和Ubuntu 14上编写带有AT& T语法(GAS编译)的汇编程序。
我试图读取用户在程序启动时传递的参数数量。例如,如果用户打开他的终端并键入./programname x y z
,我希望nParameters
变量假设值为4(因为程序名,x,y和z是参数)。
这是我到目前为止所做的,但我不断收到分段错误。
.code32
.section .data
nParameters: .byte 0
.section .text
.global _start
_start:
popl %eax #extract the number of parameters on the stack
movl %eax,nParameters
movl $1,%eax
movl $0,%ebx
int $0x80
错误在于这一行:movl %eax,nParameters
但我不知道为什么