Почему это не компилируется? - PullRequest
0 голосов
/ 30 июня 2011

Я копирую его из здесь , но компиляция не удалась:

[root@ test]# gcc -c test.S
test.S: Assembler messages:
test.S:8: Error: suffix or operands invalid for `pop'
[root@ test]# cat test.S
.text
    call start
    str:
        .string "test\n"
    start:
    movl    $4, %eax
    movl    $1, %ebx
    popl     %ecx
    movl    $5, %edx
    int     $0x80
    ret

Почему?

ОС:

CentOS release 5.5 (Final)
Kernel \r on an \m

1 Ответ

2 голосов
/ 30 июня 2011

Если вы внимательно прочитаете этот вопрос еще раз, вы заметите, что пользователь написал приложение для загрузки этого кода, который был предварительно скомпилирован в его двоичное представление, во время выполнения.Сам код не является полным приложением. Этот код, как он есть, не может генерировать допустимое двоичное (исполняемое) приложение .

При написании кода на ассемблере у вас есть несколько вариантов того, какой компилятор и синтаксис вы можете использовать для написания своих программ.,Если вы заинтересованы в изучении ассемблера, я рекомендую прочитать Программирование с нуля .

Пример ниже отсюда :

.section .data
hello:
   .ascii "Hello, World!\n\0"

.section .text
.globl _start
_start:
   movl $4, %eax
   movl $14, %edx
   movl $hello, %ecx
   movl $1, %ebx
   int $0x80
   movl $1, %eax
   movl $0, %ebx
   int $0x80

Составлено с:

as hello.s -o hello.o
ld hello.o -o hello
./hello
Hello, World!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...