2013-12-20 10 views
1

Я новичок в программировании на ассемблере. Я пишу следующий код,Почему простая программа выхода не работает?

.text 
.globl _start 

_start: 
    movl $1,%eax 
    movl $0,%ebx 
    int $0x80 

и использовать as -o JustExit.o JustExit.asm команду для создания объектного файла. (Имя файла сборки - JustExit.asm).

После этого шага я дал разрешение на выполнение с использованием,

CHMOD 777 ./JustExit.o

Когда я выполняю программу он говорит,

-su: ./ JustExit.o: невозможно выполнить двоичный файл

I a m не может понять, почему эта простая программа «выхода» не работает.

Спасибо.

ответ

3

Сборка вашего источника через as создает object file который является «еще не выполнимым». Вы должны связать объектный файл с linker, например ld, который затем будет генерировать полностью исполняемый файл (a.out по умолчанию).

Ваша командная строка цепи будет выглядеть следующим образом:

$ as -o JustExit.o JustExit.asm 
$ ld JustExit.o 
$ ./a.out 

И это работает!

Смежные вопросы