Tutorial de introdução ao NASM

Resumo

Este artigo descreve o histórico e o uso básico do montador NASM.

Introdução ao NASM

NASM (The Netwide Assembler) é um montador amplamente utilizado para plataformas x86 e x86-64. Seu histórico de versões é o seguinte:

0.98 - Lançada em 1997, esta versão inclui suporte para os processadores da série x86, bem como algumas instruções de montagem e definições de macro comumente usadas, tornando-se o primeiro montador capaz de compilar o kernel Linux.
0.99 - Lançado em 1998, muitos novos recursos foram adicionados, incluindo suporte para o conjunto de instruções MMX.
0.98.39 - Lançado em 2000, tornando-se a última versão somente para DOS.
1.0rc1 - lançado em 2002, adicionou suporte para a plataforma Windows.
2.0 – Lançado em 2008, adicionou suporte para a plataforma x86-64 e melhorou a sintaxe.
2.11 - Lançado em 2014, muitos novos recursos foram adicionados, incluindo suporte para o conjunto de instruções AVX2 e plug-ins de compilador.
2.14 – Lançado em 2017, adicionou suporte para o conjunto de instruções AVX-512 e outras melhorias.

2.15 - Lançado em janeiro de 2021, adiciona suporte para algumas das instruções mais recentes, adiciona suporte para formatos de saída de código de bits LLVM IR e LLVM, adiciona algumas opções de linha de comando e melhora a flexibilidade e personalização do NASM. , as informações de erro são mais detalhadas e preciso, o que facilita aos usuários a depuração e eliminação de erros, melhora a velocidade e a eficiência da montagem e torna o NASM mais rápido na compilação de grandes projetos.

Atualmente, a versão mais recente do NASM é a 2.15, que se tornou um dos montadores mais utilizados nas plataformas x86 e x86-64, podendo gerar código de máquina eficiente e arquivos de objetos relocáveis.

Instale o nasm

Primeiro você precisa instalar o NASM em seu ambiente de desenvolvimento. Você pode usar o gerenciador de pacotes para instalar no Linux ou baixar o instalador do site oficial no Windows.

Instale NASM no Ubuntu:

sudo apt install nasm

escrever código assembly

Escreva o código assembly usando qualquer editor de texto e salve o arquivo como .asmformato. Aqui está um exemplo simples:

section .data
    hello db 'Hello, world!',0xD,0xA,0

section .text
    global _start

_start:
    ; write the message
    mov eax, 4
    mov ebx, 1
    mov ecx, hello
    mov edx, 15
    int 0x80

    ; exit
    mov eax, 1
    xor ebx, ebx
    int 0x80

Este código Hello, world!grava a string na saída padrão e sai do programa.

código de montagem

Abra um terminal ou interface de linha de comando, mude para .asmo diretório onde o arquivo está armazenado e execute o seguinte comando:

nasm -f elf64 hello.asm

O comando acima irá gerar um elf64arquivo objeto de formato hello.o.

vincular arquivo de objeto

Para converter um assembler em um executável, os arquivos objeto precisam estar vinculados ao executável. ldIsso pode ser feito usando o vinculador GNU . Execute o seguinte comando em um terminal ou interface de linha de comando:

ld -s -o hello hello.o

O comando acima irá gerar um arquivo executável hello, que é a versão final do assembler.

execute o programa

Em um terminal ou interface de linha de comando, execute o programa com o seguinte comando:

./hello

irá gerar Hello world!, indicando que o programa foi executado com sucesso.

Referências

Manual NASM

Resumir

Aprender a linguagem assembly NASM pode ajudá-lo a compreender profundamente a arquitetura subjacente e o conjunto de instruções do computador, de modo a compreender melhor o princípio de funcionamento do sistema de computador e ajudá-lo a compreender o processo de como a linguagem de alto nível é convertida em código de máquina, de modo a compreender melhor o trabalho da linguagem de alto nível.

Acho que você gosta

Origin blog.csdn.net/bigwave2000/article/details/132526594
Recomendado
Clasificación