quarta-feira, 24 de janeiro de 2018

Compilar um programa de linguagem de montagem com o Nasm

Compilar um programa de linguagem de montagem com o Nasm Junho 2014 Para o Linux Etapa n° 1. Criar um arquivo fonte Etapa n° 2. Montar o arquivo fonte Etapa n° 3. Criação do executável Etapa n° 4. Execução do programa Para o Windows Etapa n° 1. Instalar os softwares necessários Etapa n° 2. Criar um arquivo fonte Etapa n° 3. Montar o arquivo fonte Etapa n° 4. Criação e execução do programa Nasm é um software Assembly (linguagem de montagem) livre, para arquitetura x86. É possível encontrá-lo para vários Sistemas Operacionais como o Linux ou o Windows, por exemplo. Um montador permite montar o código Assembly. (sic) Infelizmente, Assembly significa duas coisas A linguagem "Assembly", que permite programar em linguagem de máquina usando mnemônicos O software que converterá o seu código em linguagem de máquina compreensível pelo seu processador. Esta dica não te ensinará a programar com o Nasm, mas a criar um executável para o Linux e o Windows a partir de um código-fonte para o Nasm. Para o Linux Etapa n° 1. Criar um arquivo fonte Você não precisa de um editor específico para criar um arquivo fonte para o NASM. Você poderia usar um editor que suporte a sintaxe do montador, mas não há, a meu conhecimento, quem suporte a sintaxe do Nasm. Então, você pode escolher o gedit, kwrite, xemacs, etc... Ao salvar o seu arquivo fonte, dê-lhe a extensão .asm Etapa n° 2. Montar o arquivo fonte Para esta etapa, você precisará de um software Nasm instalado em sua máquina. Se você roda no Debian ou Ubuntu, basta digitar o comando sudo apt-get install nasm Se você tiver outra distribuição Linux, você deverá usar o gerenciador de pacotes da sua distribuição (por exemplo, urpmi, yum, emerge, etc) ou compilar o Nasm baixando o arquivo a partir do site oficial. Passemos à montagem do seu arquivo fonte. Vá para a linha de comando no diretório onde fica o arquivo fonte que chamaremos "test.asm", por exemplo. Veja a linha a ser digitada: nasm -f elf test.asm Isso criará um arquivo chamado "test.o" no diretório atual. Esse arquivo ainda não é executável, ele ainda é apenas um arquivo de objeto, ou seja, um arquivo que deve ser conectado com as bibliotecas das quais ele depende, como por exemplo, a biblioteca padrão "libc". Etapa n° 3. Criação do executável Agora que já temos o nosso arquivo de objeto chamado "test.o", vamos criar o nosso executável. Dois casos se apresentam aqui: Seu programa começa com um procedimento chamado "_start". Isso significa que seu programa tem seu próprio ponto de entrada, sem usar a função "main" (principal). Isso não muda muita coisa, mas você precisará usar o comando "ld" para criar o executável: ld test.o -o test Seu programa começa com um procedimento chamado "main". Você precisará utilizar o gcc para criar o seu executável: gcc test.o -o test Pronto, nosso executável foi criado, ele se chama "test" e se situa no diretório atual. Etapa n° 4. Execução do programa Para executar nosso programa chamado "test", basta digitar este comando: ./test Você também pode usar um depurador para assistir à execução. Para fazê-lo, você pode utilizar o gdb, que é usado em linha de comando. Se, no entanto, você quiser um depurador mais visual, existem interfaces gráficas que utilizam o gdb em plano de fundo, como o "Insight". Para o Windows IMPORTANTE: No Windows, a convenção de chamada de configuração não é a mesma, a função chamada deve limpar, ela mesma, a pilha. Da mesma forma, o "mains" não existe no Windows, ele deve ser substituído pelo WinMain. Se o seu ponto de entrada for "_start" ou "main", é preciso trocar para "_WinMain@16" e mudar o "ret" no final, deste procedimento de entrada, para "ret 16". Exemplo de um arquivo fonte correto no Windows: section .text global _WinMain@16 _WinMain@16: mov eax, 0 ret 16 Etapa n° 1. Instalar os softwares necessários Vamos primeiro instalar o Nasm. Vá na seção de download do Kioskea ou no site oficial, na seção de downloads (selecione a versão Win32 binários). Mantenha o seu arquivo em um canto, ele será usado mais tarde. A etapa mais delicada vai ser a de instalar "MingW", que é um ambiente de desenvolvimento grátis para o Windows. Neste endereço, escolha a última versão do MinGW. Atualmente, é a versão 5.0.0. Se ele te propor atualizar a sua instalação desde o início, diga não. Deixe todas as opções padrão selecionadas e, em seguida, espere o fim da instalação. Agora, vamos inserir o Nasm no ambiente de desenvolvimento MingW, como selvagens, mas com delicadeza. Descompacte o arquivo do Nasm, você deveria obter uma pasta com, entre outras coisas, um arquivo chamado "nasm.exe" Copie este arquivo no diretório C:\MinGW\bin Etapa n° 2. Criar um arquivo fonte Como para o Linux, não é preciso usar um editor específico para criar um arquivo fonte para o NASM. Você pode usar o bloco de notas por exemplo, mas cuidado, o bloco de notas do Windows tem uma tendência a acrescentar a extensão .txt aos arquivos que ele cria. Para evitar qualquer ambiguidade, recomendo exibir as extensões dos seus arquivos. Evite, em todos os casos, processamentos de texto como o Word ou o WordPad, que podem salvar o seu arquivo com um formato inadequado. Se quiser, utilize um editor que use a sintaxe Nasm como NasmEdit IDE (gratuito). Em todo caso, sugiro que você dê a extensão .asm ao seu arquivo fonte. Etapa n° 3. Montar o arquivo fonte Abra o interpretador de comandos do Windows (digite cmd.exe em "Executar" do menu "Iniciar" ou, diretamente, "cmd" na barra de "busca" do logotipo do Windows no Vista. Com este interpretador de comandos, você deverá ir para a pasta contendo o seu arquivo fonte com o comando "cd". Assim que estiver nesse diretório, monte o seu arquivo fonte (vamos chamá-lo de "test.asm") com este comando: nasm -f win32 test.asm -o test.o Agora, você tem um arquivo de objeto que ainda não é executável, mas que o dera em breve. Passemos à última etapa. Etapa n° 4. Criação e execução do programa Ainda em sua janela de comando, digite um último comando passado para criar o executável: ld test.o -o test.exe Se você tiver um problema com esse comando, talvez você tenha esquecido de ler o ponto importante que citei acima, no início da seção "Para o Windows". Para testar o seu executável, basta digitar "test" na janela de comando. Se você quiser um depurador para ver mais de perto o que está acontecendo, use o OllyDbg. É um excelente depurador. Tradução feita por Lucia Maurity y Nouira Este documento, intitulado « Compilar um programa de linguagem de montagem com o Nasm »a partir de Kioskea (pt.kioskea.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.
F: http://ec.ccm2.net//br.ccm.net/faq/pdf/compilar-um-programa-de-linguagem-de-montagem-com-o-nasm-8005-li9jbv.pdf

Nenhum comentário:

Postar um comentário