Код: Выделить всё
.text
.globl main
main:
pushl $message
call puts
popl %ebx
ret
.data
message:
.string "Hello, World\"> as -o hello.o hello.s
hello.s: Assembler messages:
hello.s:4: Error: suffix or operands invalid for `push'
hello.s:6: Error: suffix or operands invalid for `pop'
Может быть pushq, popq подумал я:
Код: Выделить всё
.text
.globl main
main:
pushq $message
call puts
popq %ebx
ret
.data
message:
.string "Hello, World\"А нет и она не компилируется:
> as -o hello.o hello.s
hello.s: Assembler messages:
hello.s:6: Error: suffix or operands invalid for `pop'
Потом методом извращений, я написал подобную прогу на Си, и отккомпилил ее с параметром -save-temps, проанализировав полученный исходный код hello.s сделал вот это:
Код: Выделить всё
.text
.globl main
main:
movl $message, %edi
call puts
ret
.data
message:
.string "Hello, World!"Какие отличия в программировании на асме под x86 и x86_64?