Existem algumas montadoras disponíveis, incluindo:
-
gas
(parte debinutils
e com suporte do GCC) - está disponível em todos os lugares e usa o estilo AT & T; -
NASM (procure por um pacote
nasm
em sua distribuição) - isso suporta mnemônicos no estilo Intel; -
Yasm que é uma reescrita do NASM (procure por um pacote
yasm
).
Aqui está um "Hello world" para gas
:
.global _start
.text
_start:
mov $1, %rax
mov $1, %rdi
mov $hello, %rsi
mov $13, %rdx
syscall
mov $60, %rax
xor %rdi, %rdi
syscall
hello:
.ascii "Hello, world\n"
Salve isso em hello.S
e crie-o usando gcc -c hello.S && ld -o hello hello.o
.
O equivalente para o NASM é:
section .text
global _start
_start:
mov rax, 1
mov rdi, 1
mov rsi, hello
mov rdx, len
syscall
mov rax, 60
xor rdi, rdi
syscall
hello db "Hello, world",0x0A
len equ $ - hello
Salve isso como hello.asm
e crie-o usando nasm -felf64 hello.asm && ld -o hello hello.o
.