Сборка pushl / popl x86 не работает с сообщением «Ошибка: суффикс или операнды недействительны»

Я новичок в программировании на сборке, работаю через Programming Ground Up на рабочем столе Ubuntu x86_64 с Ассемблер GNU v2.20.1.

Мне удалось собрать / связать выполнение моего кода, пока я не смог использовать инструкции pushl / popl для управления стеком. Следующий код не может быть ассемблирован:

 .section .data  # empty

 .section .text
.globl _start
_start:
 pushl $1       # push the value 1 onto the stack
 popl %eax      # pop 1 off the stack and into the %eax register
 int $0x80      # exit the program with exit code '1'

Используя «as test.s -o test.o», эти ошибки появляются в терминале, и test.o не создается:

test.s: Assembler messages: 
test.s:9: Error: suffix or operands invalid for 'push'
test.s:10:  Error: suffix or operands invalid for 'popl'

Я проверил документацию, и операнды Я' m использование для pushl и popl. Это не совсем вопрос отладки - так что не так с моим кодом? Или это мой ассемблер?

27
задан Ciro Santilli 新疆改造中心法轮功六四事件 10 May 2015 в 13:16
поделиться