conteúdo parcial

This commit is contained in:
Blau Araujo 2025-05-22 14:36:58 -03:00
parent 2991d210da
commit c77e27cf90

91
curso/contents.org Normal file
View file

@ -0,0 +1,91 @@
* 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