Я новичок в программировании на ассемблере, работаю через Программирование с нуля на рабочем столе 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'
Я проверил документацию, и операнды, которые я использую для pushl и popl, действительны.Это не совсем вопрос отладки - так что не так с моим кодом?Или это мой ассемблер?