From e1c525de6bfccf4627b4a0d9edc9b14445d0bb05 Mon Sep 17 00:00:00 2001 From: Blau Araujo Date: Mon, 2 Jun 2025 12:29:14 -0300 Subject: [PATCH] =?UTF-8?q?atualiza=C3=A7=C3=A3o=20do=20conte=C3=BAdo=20ge?= =?UTF-8?q?ral=20do=20curso?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- curso/contents.org | 94 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/curso/contents.org b/curso/contents.org index 784c574..b34d150 100644 --- a/curso/contents.org +++ b/curso/contents.org @@ -1,3 +1,53 @@ +* 0 -- Introdução à linguagem Assembly (NASM) + +- O que é Assembly +- Linguagem dependente da arquitetura +- Linguagem de montagem +- Classificações da linguagem + - De baixo nível de abstração (segunda geração) + - Imperativa + - De tipagem inexistente + - Com gerenciamento manual de memória + - Compilada via montagem + - Paradigmas + - De uso específico +- Comparação com outras linguagens + - Não há estruturas de controle + - Não há o conceito de variáveis + - Ponteiros, só por analogia + - Em vez de tipos, quantidades de bytes +- Por que aprender Assembly? + - Entendimento do funcionamento de computadores + - Depuração e análise + - Integração com C + - Aprendizado +- Principais sintaxes + - Sintaxe AT&T + - Sintaxe Intel + - Compatibilidade +- O Netwide Assembler (NASM) + - Sintaxe de instruções + - Sintaxe de metaprogramação da montagem + - Operadores e símbolos + - Seções no NASM + - Importação e exportação de símbolos + - Tipos de operandos em instruções +- Instruções essenciais + - Instrução =mov= + - Instrução =lea= + - Instruções aritméticas básicas (=inc=, =dec=, =add= e =sub=) + - Instruções de multiplicação e divisão (=mul=, =imul=, =div= e =idiv=) + - Instrução =jmp= (salto incondicional) + - Instruções de salto condicional + - Instrução =cmp= + - Instrução =test= + - Instruções =call= e =ret= + - Instrução =syscall= + - Padrões frequentemente utilizados +- Montagem e execução de programas em Assembly NASM + - Requisitos + - Exemplo: "Salve, simpatia!" + * 1 -- Arquitetura de computadores - Modelo de von Neumann @@ -89,3 +139,47 @@ - Exemplo em Assembly - Preservação de registradores com a pilha - Resumo comparativo com chamadas de funções + +* 6 -- Vetor de argumentos de linha de comando + +- O quadro inicial da pilha do processo +- Inspecionando argumentos e variáveis exportadas + - Contador de argumentos + - Primeiro elemento do vetor de argumentos + - Separador nulo do vetor de argumentos + - Primeiro elemento do vetor ambiente + - Resultados com mais de um argumento +- Acesso aos argumentos em baixo nível + - Acesso direto à pilha + - Acesso em Assembly exportando main +- Listando todos os dados de argumentos + - Exemplo em Assembly com main e gcc + - Exemplo com acesso direto à pilha + +* 7 -- Vetor de ambiente + +- Revisão: o quadro inicial da pilha do processo +- Localizando o vetor de ambiente +- Extraindo valores de variáveis exportadas +- Implementação com funções da linguagem C + +* 8 -- Fluxos de dados + +- Tabela de descritores de arquivos + - Uma nota sobre tipos de arquivos + - Descritores de arquivos padrão + - Abstração em alto nível (/stream/) +- Uso dos fluxos de dados padrão no shell + - Mecanismo de redirecionamento + - Mecanismo de pipe + - Captura da entrada padrão +- Uso dos fluxos de dados padrão em programas + - Demonstrando um redirecionamento interno + - Demonstrando um pipe interno + - Demonstrando a leitura da entrada padrão + - Identificando a origem do fluxo de leitura +- Criação e manipulação de fluxos de dados +- Armazenamento temporário (/bufferização/) + - Bufferização em alto nível + - Bufferização no nível do kernel + - Bufferização em Assembly