Assembly

SYSCALL

Sempre que for programar em Assembly utilizando o Linux, devemos nos atentar as chamadas do Syscall e ao tipo de arquitetura (x86 ou x64).

Consulte sempre os devidos arquivos unistd_32.h e unistd_64.h para realizar corretamente as Syscalls, que geralmente estão localizados em /usr/include/x86_64-linux-gnu/asm/.

No fim desse post há 2 sites com base nesses arquivos, porém de uma forma mais amigável.

Compilando

Converte o arquivo .asm em Object File. Note que será gerado um arquivo com o mesmo nome, porém com a extensão .o, então use o parâmetro -o para personalizar o nome do arquivo de saída.

# 32 bits
nasm -f elf32 <file_x86.asm>

# 64 bits
nasm -f elf64 <file_x64.asm>

Utilizando o linker para gerar arquivo final.

# 32 bits
ld --entry _main -m elf_i386 <file_x86.o> -o <output_file>

# 64 bits
ld --entry _main <file_x64.o> -o <output_file>

Sites

https://syscalls.w3challs.com/?arch=x86
https://syscalls.w3challs.com/?arch=x86_64

Last updated