为什么我的汇编代码中不能使用3个以上的变量?

时间:2012-02-26 08:50:16

标签: assembly x86 gas

我从汇编开始,特别是使用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

这不起作用。我收到了分段错误错误。 可能有什么不对?我该怎么办?

1 个答案:

答案 0 :(得分:2)

编译时出现问题,所以我用'main'改变了'_start'然后使用了gcc,就这么简单。

在此之前我尝试使用gcc,使用-nostartfiles选项,也尝试使用as和ld,应该有一种方法可以使用它但使用gcc并将'_start'更改为'main'是最简单的我能做得最快。