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
Was this helpful?