# Aprendendo Assembly

## Aprendendo Assembly

- [Introdução](https://mentebinaria.gitbook.io/assembly/master.md): Livro gratuito sobre Assembly x86 e x86-64
- [Conteúdo](https://mentebinaria.gitbook.io/assembly/conteudo.md): Conteúdo que será apresentado neste livro
- [Como usar este livro](https://mentebinaria.gitbook.io/assembly/como-usar-este-livro.md): Aprenda a aprender
- [A base](https://mentebinaria.gitbook.io/assembly/a-base.md): Capítulo explicando os principais tópicos à respeito do Assembly e da arquitetura.
- [Noção geral da arquitetura](https://mentebinaria.gitbook.io/assembly/a-base/arquitetura-x86.md): Noção geral da arquitetura x86
- [Modos de operação](https://mentebinaria.gitbook.io/assembly/a-base/modos-de-operacao.md): Entendendo os diversos modos de operação presentes em processadores x86
- [Sintaxe](https://mentebinaria.gitbook.io/assembly/a-base/sintaxe.md): Entendendo a sintaxe da linguagem Assembly no nasm
- [Registradores de propósito geral](https://mentebinaria.gitbook.io/assembly/a-base/registradores-de-proposito-geral.md): Entendendo os registradores da arquitetura x86-64
- [Endereçamento](https://mentebinaria.gitbook.io/assembly/a-base/enderecamento.md): Entendendo o acesso à memória RAM na prática
- [Pilha](https://mentebinaria.gitbook.io/assembly/a-base/pilha.md): Entendendo como a pilha (hardware stack) funciona na arquitetura x86
- [Saltos](https://mentebinaria.gitbook.io/assembly/a-base/saltos.md): Desviando o fluxo de execução do código
- [Procedimentos](https://mentebinaria.gitbook.io/assembly/a-base/procedimentos.md): Entendendo funções em Assembly
- [Seções e símbolos](https://mentebinaria.gitbook.io/assembly/a-base/secoes-e-simbolos.md): Entendendo um pouco do arquivo objeto
- [Instruções assembly x86](https://mentebinaria.gitbook.io/assembly/a-base/instrucoes.md): Entendendo algumas instruções do Assembly x86
- [Instruções do NASM](https://mentebinaria.gitbook.io/assembly/a-base/instrucoes-do-nasm.md): Um pouco sobre o uso do NASM
- [Pré-processador do NASM](https://mentebinaria.gitbook.io/assembly/a-base/pre-processador-do-nasm.md): Aprendendo a usar o pré-processador do NASM
- [Syscall no Linux](https://mentebinaria.gitbook.io/assembly/a-base/syscall-no-linux.md): Chamada de sistema no Linux
- [Olá mundo no Linux](https://mentebinaria.gitbook.io/assembly/a-base/ola-mundo-no-linux.md): Finalmente o Hello World.
- [Revisão](https://mentebinaria.gitbook.io/assembly/a-base/revisao.md): Entenda tudo o que viu aqui
- [Aprofundando em Assembly](https://mentebinaria.gitbook.io/assembly/aprofundando-em-assembly.md): Aprendendo mais um pouco
- [Registradores de segmento](https://mentebinaria.gitbook.io/assembly/aprofundando-em-assembly/registradores-de-segmento.md): Segmentação da memória RAM.
- [CALL e RET](https://mentebinaria.gitbook.io/assembly/aprofundando-em-assembly/call-e-ret.md): Entendendo detalhadamente as instruções CALL e RET.
- [Position-independent executable](https://mentebinaria.gitbook.io/assembly/aprofundando-em-assembly/position-independent-executable.md): Explicando PIE e ASLR
- [Atributos](https://mentebinaria.gitbook.io/assembly/aprofundando-em-assembly/atributos.md): Explicando os atributos das instruções da arquitetura x86.
- [Prefixos](https://mentebinaria.gitbook.io/assembly/aprofundando-em-assembly/prefixos.md): Modificando os atributos da operação.
- [Flags do processador](https://mentebinaria.gitbook.io/assembly/aprofundando-em-assembly/flags-do-processador.md): Registrador EFLAGS e FLAGS.
- [Instruções condicionais](https://mentebinaria.gitbook.io/assembly/aprofundando-em-assembly/instrucoes-condicionais.md): Entendendo as instruções condicionais e as status flags.
- [Programando no MS-DOS](https://mentebinaria.gitbook.io/assembly/aprofundando-em-assembly/programando-no-ms-dos.md): Conhecendo o ambiente do MS-DOS.
- [Interrupções de software e exceções](https://mentebinaria.gitbook.io/assembly/aprofundando-em-assembly/interrupcoes-de-software.md): Interrupções e exceções sendo entendidas na prática.
- [Procedimentos do BIOS](https://mentebinaria.gitbook.io/assembly/aprofundando-em-assembly/procedimentos-do-bios.md): Existem algumas interrupções que são criadas pelo próprio BIOS do sistema. Vamos ver algumas delas aqui.
- [Usando instruções da FPU](https://mentebinaria.gitbook.io/assembly/aprofundando-em-assembly/usando-instrucoes-da-fpu.md): Aprendendo a usar o x87 para fazer cálculos.
- [Entendendo SSE](https://mentebinaria.gitbook.io/assembly/aprofundando-em-assembly/entendendo-sse.md): Aprendendo sobre SIMD, SSE e registradores XMM.
- [Instruções de movimentação de dados](https://mentebinaria.gitbook.io/assembly/aprofundando-em-assembly/entendendo-sse/instrucoes-de-movimentacao-de-dados.md): Listando algumas instruções de movimentação de dados do SSE.
- [Instruções aritméticas](https://mentebinaria.gitbook.io/assembly/aprofundando-em-assembly/entendendo-sse/instrucoes-aritmeticas.md): Instruções de operação aritmética do SSE.
- [Instruções lógicas e de comparação](https://mentebinaria.gitbook.io/assembly/aprofundando-em-assembly/entendendo-sse/instrucoes-logicas-e-de-comparacao.md)
- [Instruções com inteiros 128-bit](https://mentebinaria.gitbook.io/assembly/aprofundando-em-assembly/entendendo-sse/instrucoes-com-inteiros-128-bit.md)
- [Instruções de conversão](https://mentebinaria.gitbook.io/assembly/aprofundando-em-assembly/entendendo-sse/instrucoes-de-conversao.md): Convertendo valores entre float, double e inteiro.
- [Programando junto com C](https://mentebinaria.gitbook.io/assembly/programando-junto-com-c.md): Aprendendo a mesclar Assembly e C
- [Sintaxe do GAS](https://mentebinaria.gitbook.io/assembly/programando-junto-com-c/sintaxe-do-gas.md): Aprendendo a sintaxe AT\&T e a usar o GAS
- [Convenção de chamada da System V ABI](https://mentebinaria.gitbook.io/assembly/programando-junto-com-c/convencao-de-chamada-da-system-v-abi.md): Aprendendo sobre a convenção de chamada do C usada no Linux.
- [Convenções de chamada no Windows](https://mentebinaria.gitbook.io/assembly/programando-junto-com-c/convencoes-de-chamada-no-windows.md): Aprendendo sobre as convenções de chamada usadas no Windows (x64, cdecl e stdcall).
- [Variáveis em C](https://mentebinaria.gitbook.io/assembly/programando-junto-com-c/variaveis-em-c.md): Entendendo como variáveis em C são representadas em Assembly.
- [Funções em C](https://mentebinaria.gitbook.io/assembly/programando-junto-com-c/funcoes-em-c.md): Entendendo as funções em C do ponto de vista do Assembly.
- [Ambiente hosted](https://mentebinaria.gitbook.io/assembly/programando-junto-com-c/ambiente-hosted.md): Entendendo a execução de código em C no ambiente hosted.
- [Ambiente freestanding](https://mentebinaria.gitbook.io/assembly/programando-junto-com-c/ambiente-freestanding.md): Entendendo a execução de código em C no ambiente freestanding.
- [Inline Assembly no GCC](https://mentebinaria.gitbook.io/assembly/programando-junto-com-c/inline-assembly-no-gcc.md): Aprendendo a usar o inline Assembly do compilador GCC.
- [Instruções intrínsecas](https://mentebinaria.gitbook.io/assembly/programando-junto-com-c/instrucoes-intrinsecas.md): Aprendendo sobre as instruções intrínsecas na arquitetura x86-64
- [Depuração de código](https://mentebinaria.gitbook.io/assembly/depuracao-de-codigo.md): Aprendendo a depurar código em nível de Assembly
- [Entendendo os depuradores](https://mentebinaria.gitbook.io/assembly/depuracao-de-codigo/entendendo-os-depuradores.md): Entendendo os conceitos principais sobre um depurador e como eles funcionam.
- [Depurando com o GDB](https://mentebinaria.gitbook.io/assembly/depuracao-de-codigo/depurando-com-o-gdb.md): Aprendendo a usar o depurador GDB do projeto GNU.
- [Depurando com o Dosbox](https://mentebinaria.gitbook.io/assembly/depuracao-de-codigo/depurando-com-o-dosbox.md): Aprendendo a usar o depurador do Dosbox
- [Código de máquina](https://mentebinaria.gitbook.io/assembly/apendices/codigo-de-maquina.md): Entendendo o código de máquina x86-64
- [Formato das instruções](https://mentebinaria.gitbook.io/assembly/apendices/codigo-de-maquina/formato-das-instrucoes.md): O formato das instruções do código de máquina.
- [Atributos e prefixos](https://mentebinaria.gitbook.io/assembly/apendices/codigo-de-maquina/atributos-e-prefixos.md): Entendendo os prefixos no código de máquina.
- [Immediate](https://mentebinaria.gitbook.io/assembly/apendices/codigo-de-maquina/immediate.md): Campo immediate na instrução do código de máquina.
- [Displacement](https://mentebinaria.gitbook.io/assembly/apendices/codigo-de-maquina/displacement.md): Campo displacement na instrução do código de máquina.
- [ModR/M e SIB](https://mentebinaria.gitbook.io/assembly/apendices/codigo-de-maquina/modr-m-e-sib.md): Entendendo os byte ModR/M e SIB.
- [Opcode](https://mentebinaria.gitbook.io/assembly/apendices/codigo-de-maquina/opcode.md): Entendendo o opcode da instrução.
- [Prefixo REX](https://mentebinaria.gitbook.io/assembly/apendices/codigo-de-maquina/prefixo-rex.md): Entendendo o prefixo REX no x86-64.
- [Codificação dos registradores](https://mentebinaria.gitbook.io/assembly/apendices/codigo-de-maquina/codificacao-dos-registradores.md): Entendendo a codificação dos registradores em 16-bit, 32-bit e 64-bit
- [TO DO](https://mentebinaria.gitbook.io/assembly/metadados/to-do.md): Ainda não acabou.
- [Referências](https://mentebinaria.gitbook.io/assembly/metadados/referencias.md)
