Como criar object files (código objeto) e linkar arquivos em Assembly

No tutorial passado de nossa apostila, ensinamos como criar um programa em Assembly, o famoso e simples "Hello world".

Lá, mostramos como criar o arquivo com a extensão asm.

Ao término deste tutorial, você irá aprender como transformar esse arquivo em executável, e executá-lo.



Como transformar um arquivo .asm em executável

Agora precisamos converter nosso código em Assembly, que é feito e entendido por nós humanos, para a linguagem de máquina, que é a linguagem que o computador realmente entende e roda.

Isso se faz em dois passos:

  • Criar o object file, que pega o .asm e cria, a partir dele, um arquivo com a extensão .o
  • Linkar nosso programa, fazendo com que o código-objeto se torne em um executável
Vamos ensinar como fazer isso utilizando o assembler NASM, no sistema operacional Linux.
Um importante detalhe: dependendo da arquitetura de seu sistema, 32 bits ou 64 bits, os comandos diferem um pouco, mas ensinaremos como trabalhar em ambos casos.

Como criar o object file em Assembly

Agora vamos criar o arquivo com extensão .o, que é o objeto (resultado da transformação do código para código de máquina).


Para isso, vamos finalmente usar o nasm.

Como Assembly é baixo níveo, o código vai se diferenciar levemente caso você use 32 ou 64 bits, mas nosso tutorial de Assembly vai explicar você a rodar seus programas em ambas arquiteturas.



Caso seja 32 bits, vá no diretório do hello.asm e digite o seguinte código no terminal:

nasm -f hello.asm


Caso seja 64 bits, digite:

nasm -f elf64 hello.asm


Se você notar bem, foi criado um arquivo com extensão .o, é o arquivo-objeto hello.o

























Como linkar arquivos em Assembly

O próximo passo é a linkagem, onde vamos transformar o(s) códigos objeto de nossos programas para torná-los executáveis.

Vamos usar o comando ld para isso.



32 ou 64 bits:

ld hello.o -o hello


Pronto, agora você tem seu arquivo executável "hello". Para rodá-lo, digite o comando a seguir, que deve mostrar uma mensagem na tela:

./hello


O resultado desses passos é:



Curso de Assembly online grátis





Como rodar o código Assembly - Tutorial Alternativo

Uma outra maneira de fazer todo esse processo é a seguinte:



1. Criar o código-objeto:

nasm -f hello.asm




2. Linkando



32 bits:

ld hello.o -o hello



64 bits:

ld -m elf_i386 hello.o -o hello

Nenhum comentário:

Tutoriais de Programação