From 1cd49c8508ee811d1406c144861ab060ddb99da5 Mon Sep 17 00:00:00 2001 From: Blau Araujo Date: Thu, 22 May 2025 14:42:10 -0300 Subject: [PATCH] =?UTF-8?q?conte=C3=BAdo=20parcial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- curso/contents.org | 154 ++++++++++++++++++++++----------------------- 1 file changed, 77 insertions(+), 77 deletions(-) diff --git a/curso/contents.org b/curso/contents.org index ba12ba2..784c574 100644 --- a/curso/contents.org +++ b/curso/contents.org @@ -1,91 +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) +- 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 +- 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 +- 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//maps -** Mapeamento de memória de um programa em Assembly -*** Análise com o GNU Debugger (GDB) -*** Executáveis independentes de posição (PIE) +- 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//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 +- 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