quinta-feira, 23 de junho de 2016

Compilando programas em assembly no ubuntu com o NASM


Instalando o NASM


Na última postagem mostrei como compilar programas em C utilizando o compilador nativo GCC. Hoje irei explicar um procedimento similar com a linguagem Assembly.

Nessa postagem irei me abster a compilação, até para as pessoas que já tem experiência em outros compiladores e plataformas poderem aproveitar da melhor forma possível.

Em primeiro lugar é necessário saber se o NASM está instalado da seguinte forma: Abra o terminal e digite "nasm -h" , se aparecer algo parecido com a imagem abaixo o nasm não está no seu PC. Caso não esteja basta apenas digitar "sudo apt install nasm" quando estiver com conexão na internet.

 Segue o exemplo abaixo:




Como segunda alternativa, você pode baixar o NASM direto do site.

Como instalar pelo arquivo do site?

1 - Baixe a versão que desejar
2 - Extraia o arquivo
3 - Abra o terminal na pasta que extraiu o arquivo
4 - Digite "./configure"
5 - Digite "make"
6 - Digite "make install"

 

Compilando um programa "Olá mundo!".

Agora sim vamos ao que interessa, para gerar um programa que diga "Olá mundo!" no terminal, primeiro deve-se baixar este arquivo ou escrever o seguinte programa:


section .text
    global main    ;precisa ser declarado pro linker
main:                  ;ponto de entrada do linker
    mov edx,len    ;tamanho da mensagem
    mov ecx,msg   ; mensagem a ser gravada
    mov ebx,1       ;saida em stdout
    mov eax,4       ;numero da chamada do sistema
    int 0x80          ; chamada do kernel
 
    mov eax,1       ;chamada sys_exit
    int 0x80

section .data
msg db 'Ola mundo!', 0xa   ;string

len equ $ - msg                      ;tamanho da string

Salve o arquivo com o nome de "ola.asm", e abra o terminal onde salvou o arquivo. Feito isso abra o terminal na pasta (explique isso no post de como compilar programas em c no ubuntu) e digite "nasm -f elf ola.asm", isso vai gerar um arquivo objeto "ola.o".



Agora digite "ld -m elf_i386 -s -o ola ola.o", irá aparecer um aviso mostrando que o ponto de entrada não foi definido, mas não se procupe. Este passo deve gerar um executável.

Finalmente para executar basta digitar no terminal "./ola". Deverá aparecer um Ola mundo no terminal.


 No próximo post irei explicar a estrutura de um programa da linguagem assembly NASM para ubuntu. 

Até breve!




Nenhum comentário:

Postar um comentário

Gradiente descendente em python para problemas em 1° grau

O seguinte código utiliza o recurso gradiente descendente para descobrir dois parâmetros, theta e theta1, que irão descrever uma equação d...