Почему я не могу использовать более 3 переменных в своем коде сборки? - PullRequest
1 голос
/ 26 февраля 2012

Я начинаю со сборки, особенно со сборки 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 Ответ

2 голосов
/ 28 февраля 2012

Это была проблема при компиляции, поэтому я изменил '_start' на 'main', а затем использовал gcc, это было так просто.

До этого я пытался с помощью gcc, используя -Параметр nostartfiles, также пытался использовать as и ld, должен быть способ, с помощью которого можно с этим работать, но использование gcc и изменение _start с помощью main было самым простым и быстрым, что я мог сделать.

...