pbn/curso/contents.org
2025-05-22 14:42:10 -03:00

91 lines
2.8 KiB
Org Mode

* 1 -- Arquitetura de computadores
- Modelo de von Neumann
- Influência nas arquiteturas modernas
- Gargalo de Von Neumann
- Arquiteturas x86
- Características
- Gerações da família x86:
- Comparativo com outras arquiteturas
- Componentes de uma CPU x86_64
- Principais registradores e seus propósitos (64 bits)
- Relação com outras arquiteturas x86
- Primeiro exemplo em Assembly x86_64
- Seção do código executável
- O ponto de entrada
- Chamada de sistema
- Montagem e execução (no terminal)
* 2 -- Linguagens, montagem e compilação
- Do código-fonte ao binário
- Arquivos texto e binários
- Formato de binário executável
- Programação em código de máquina
- Linguagens de baixo e alto nível
- Sistemas de tradução de linguagens
- Linguagens interpretadas
- Linguagens compiladas
- Linguagens de montagem
- Um programa em Assembly
- Tamanho do binário em bytes
- Informações gerais do arquivo
- Cabeçalho do formato ELF
- Lista de seções do programa
- Despejo do conteúdo (em hexa) da seção .text
- Despejo do conteúdo (em hexa) da seção .rodata
- Uma versão equivalente em C
- Tamanho do binário em bytes:
- Informações gerais do arquivo
- Cabeçalho do formato ELF
- Lista de seções do programa
- Despejo do conteúdo (em hexa) da seção .text
- Despejo do conteúdo (em hexa) da seção .rodata
- Desmontagem comparativa
* 3 -- O formato binário ELF
- O que é o formato ELF
- Principais tipos de arquivos objeto
- Formato do arquivo
- Seções especiais
- Tipos de segmentos
- Definindo seções ELF em NASM para Linux 64 bits
- Uma nota sobre alinhamento de dados
- Inspecionando a seção .rodata
- Inspeção da seção .data
- Inspecionando a seção .bss
* 4 -- Mapeamento de memória
- Como programas são executados
- O que são processos
- Layout da memória virtual de um processo
- Explorando os espaços de endereços de processos
- Mapeamento de memória de um programa em C
- Análise com 'pmap'
- Análise com o arquivo /proc/<pid>/maps
- Mapeamento de memória de um programa em Assembly
- Análise com o GNU Debugger (GDB)
- Executáveis independentes de posição (PIE)
* 5 -- Pilha de hardware e pilha de memória
- Objetivos
- O conceito de pilha (stack)
- Implementação da pilha como estrutura de dados
- Aplicações típicas
- Operações associadas às pilhas
- Pilha de memória
- Pilha de hardware
- Registradores e a pilha de memória
- Convenções de chamadas de funções (System V AMD64 ABI)
- Ordem dos argumentos
- Valor de retorno
- Registradores preservados e não preservados
- Exemplo em C
- Quadro de pilha (/stack frame/)
- Convenções de chamadas de sistema
- Exemplo em Assembly
- Preservação de registradores com a pilha
- Resumo comparativo com chamadas de funções