aula 1 reorganização

This commit is contained in:
Blau Araujo 2025-05-14 11:36:15 -03:00
parent e1eda0dd44
commit 52d1a2afbd

View file

@ -1,13 +1,17 @@
* Aula 1 Arquitetura de Computadores
#+title: Aula 1 -- Arquitetura de computadores
#+author: Blau Araujo
#+email: cursos@blauaraujo.com
** Objetivos
#+options: toc:3
* Objetivos
- Compreender os principais componentes de um computador sob o modelo de von Neumann.
- Reconhecer os registradores da arquitetura x86_64.
- Entender a relação entre hardware e código Assembly.
- Executar o primeiro programa Assembly com uma chamada de sistema.
** Modelo de von Neumann
* Modelo de von Neumann
Um computador possui:
@ -32,7 +36,7 @@ Como era antes:
- A CPU executa o ciclo: busca → decodifica → executa, mas pode realizar a busca
de dados e instruções em paralelo.
*** Influência nas arquiteturas modernas
** Influência nas arquiteturas modernas
O modelo de Von Neumann influenciou profundamente as arquiteturas modernas de
computadores, estabelecendo a base para a maioria dos designs de sistemas
@ -74,7 +78,7 @@ computacionais atuais. Algumas das principais influências incluem:
não estágios do processamento, são executadas simultaneamente.
#+end_quote
*** Gargalo de Von Neumann
** Gargalo de Von Neumann
O gargalo de Von Neumann é uma limitação de desempenho causada pelo fato de que
a CPU e a memória compartilham o mesmo barramento para acessar instruções e
@ -99,7 +103,7 @@ que usa memórias separadas internamente (como em caches) para dados e instruç
mantendo um espaço de memória unificado do ponto de vista do programador.
#+end_quote
** Arquiteturas x86
* Arquiteturas x86
A arquitetura x86 é uma família de conjuntos de instruções (ISA /Instruction
Set Architecture/) baseada no modelo de Von Neumann e desenvolvida originalmente
@ -121,7 +125,7 @@ com AMD64. Assim, AMD64 é a origem técnica da arquitetura x86 de 64 bits utili
na maioria dos sistemas modernos.
#+end_quote
*** Características
** Características
- ISA complexa (CISC /Complex Instruction Set Computing/), com centenas de
instruções e modos de endereçamento.
@ -140,7 +144,7 @@ da arquitetura (como troca de contexto e proteção básica), mas a segmentaçã
como era usada no MS-DOS, é totalmente evitada.
#+end_quote
*** Otimizações em relação ao modelo de Von Neumann
** Otimizações em relação ao modelo de Von Neumann
A arquitetura x86 é uma evolução prática do modelo de Von Neumann, com
otimizações como:
@ -149,7 +153,7 @@ otimizações como:
- Execução fora de ordem (/out-of-order execution/).
- /Pipelines/ e paralelismo interno.
*** Comparativo com outras arquiteturas
** Comparativo com outras arquiteturas
Todas as arquiteturas modernas seguem, em maior ou menor grau, os princípios
do modelo de Von Neumann. No entanto, diferem na forma como organizam e executam
@ -186,7 +190,7 @@ instruções. Veja o comparativo:
| ARM | RISC | Média | Baixo | Celulares, IoT, Apple M1+ |
| RISC-V | RISC | Baixa | Baixo | Pesquisa, sistemas embarcados |
** Componentes de uma CPU x86_64
* Componentes de uma CPU x86_64
- Unidade de Controle (/Control Unit/ - CU) ::
@ -248,7 +252,7 @@ instruções. Veja o comparativo:
Responsável por lidar com interrupções externas e internas, gerenciando a
prioridade e o tratamento adequado das interrupções no sistema.
** Principais registradores e seus propósitos (64 bits)
* Principais registradores e seus propósitos (64 bits)
- =RAX=: acumulador/propósito geral
- =RBX=: base/propósito geral
@ -264,7 +268,7 @@ instruções. Veja o comparativo:
A arquitetura x86_64 ainda inclui oito registradores de propósito geral, de =R8=
a =R15=.
** Primeiro exemplo em Assembly x86_64
* Primeiro exemplo em Assembly x86_64
#+begin_src asm
; Retorna 42 como estado de término
@ -278,7 +282,7 @@ _start:
syscall
#+end_src
*** Compilação e execução (no terminal)
** Compilação e execução (no terminal)
#+begin_example
:~$ nasm -f elf64 -o exit42.o exit42.asm
@ -288,13 +292,13 @@ _start:
42
#+end_example
** Exercícios sugeridos
* Exercícios sugeridos
1. Modifique o programa Assembly para retornar "sucesso".
2. Desmonte (=objdump -d=) os binários gerados e compare os códigos de máquina.
3. Use =strace ./exit42= para verificar a chamada de sistema realizada.
** Referências
* Referências
- [[https://namazso.github.io/x86/][Intel® 64 and IA-32 Instruction Set Reference]]
- [[https://wiki.osdev.org/CPU_Registers_x86-64][OS Dev: CPU Registers x86-64]]