我从汇编开始,特别是使用GNU程序集,所以我正在使用寄存器,变量和值以及那种东西,但后来我注意到我不能使用超过3个变量。首先我写了这个:
.section .data
chars: .ascii "something"
stuff: .long 0
more: .long 1
.section .text
.globl _start
_start:
movl stuff, %eax
movl %eax, stuff
movl $1, %eax
movl $0, %ebx
int $0x80
并在终端上尝试了它并且工作了,但后来我尝试了这个
.section .data
chars: .ascii "something"
stuff: .long 0
more: .long 1
evenmore: .long 3
.section .text
.globl _start
_start:
movl stuff, %eax
movl %eax, stuff
movl $1, %eax
movl $0, %ebx
int $0x80
这不起作用。我收到了分段错误错误。 可能有什么不对?我该怎么办?
答案 0 :(得分:2)
编译时出现问题,所以我用'main'改变了'_start'然后使用了gcc,就这么简单。
在此之前我尝试使用gcc,使用-nostartfiles选项,也尝试使用as和ld,应该有一种方法可以使用它但使用gcc并将'_start'更改为'main'是最简单的我能做得最快。