Skip to content

Commit e1218c1

Browse files
committed
🏗️ estrutura: criar estrutura completa de subseções do Capítulo 5
Adicionar 22 arquivos de subseção para o Capítulo 5 - Computação com Máquinas de Registradores: **5.1 Projetando Máquinas de Registradores (5 subseções):** - 5.1.1 - Uma Linguagem para Descrever Máquinas de Registradores - 5.1.2 - Abstração no Design de Máquinas - 5.1.3 - Sub-rotinas - 5.1.4 - Usando uma Pilha para Implementar Recursão - 5.1.5 - Resumo das Instruções **5.2 Simulador de Máquina de Registradores (4 subseções):** - 5.2.1 - O Modelo de Máquina - 5.2.2 - O Assembler - 5.2.3 - Gerando Funções de Execução para Instruções - 5.2.4 - Monitorando o Desempenho da Máquina **5.3 Alocação de Armazenamento e Coleta de Lixo (2 subseções):** - 5.3.1 - Memória como Vetores - 5.3.2 - Mantendo a Ilusão de Memória Infinita (Garbage Collection) **5.4 Avaliador de Controle Explícito (4 subseções):** - 5.4.1 - O Núcleo do Avaliador de Controle Explícito - 5.4.2 - Avaliação de Sequências e Recursão em Cauda - 5.4.3 - Condicionais, Atribuições e Declarações - 5.4.4 - Executando o Avaliador **5.5 Compilação (7 subseções):** - 5.5.1 - Estrutura do Compilador - 5.5.2 - Compilando Expressões - 5.5.3 - Compilando Combinações - 5.5.4 - Combinando Sequências de Instruções - 5.5.5 - Um Exemplo de Código Compilado - 5.5.6 - Endereçamento Léxico - 5.5.7 - Interfaceando Código Compilado com o Avaliador Cada arquivo inclui: - Frontmatter com título em português - Aviso de "Em Tradução" - Visão geral do conteúdo - Tópicos principais - Link para guia de tradução Atualizar sidebars.js com estrutura hierárquica completa
1 parent 65c203e commit e1218c1

23 files changed

Lines changed: 1057 additions & 10 deletions

docs/chapter-5/5.1.1.mdx

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
---
2+
title: 5.1.1 Uma Linguagem para Descrever Máquinas de Registradores
3+
---
4+
5+
# 5.1.1 Uma Linguagem para Descrever Máquinas de Registradores
6+
7+
:::info Em Tradução
8+
Esta seção está sendo preparada para tradução. O conteúdo completo será adicionado em breve.
9+
10+
Contribuições são bem-vindas! Se você gostaria de ajudar na tradução desta seção, consulte o [Guia de Tradução](/guia-traducao).
11+
:::
12+
13+
## Visão Geral
14+
15+
Esta seção apresentará uma linguagem para descrever máquinas de registradores, incluindo:
16+
17+
- Notação para descrever controladores de máquinas
18+
- Estrutura de instruções de máquina de registradores
19+
- Especificação de caminhos de dados (data paths)
20+
- Exemplos de descrições de máquinas completas
21+
22+
## Tópicos Principais
23+
24+
- Instruções de atribuição (`assign`)
25+
- Instruções de teste (`test`)
26+
- Instruções de ramificação (`branch`)
27+
- Instruções de salto (`go_to`)
28+
- Rótulos e estrutura de controle
29+
- Operações e registradores
30+
31+
## Exercícios
32+
33+
Esta seção contém exercícios relacionados à descrição de máquinas de registradores em linguagem de máquina.
34+
35+
---
36+
37+
**Nota**: Esta subseção expande o conteúdo introduzido em 5.1 sobre o design de máquinas de registradores.

docs/chapter-5/5.1.2.mdx

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
title: 5.1.2 Abstração no Design de Máquinas
3+
---
4+
5+
# 5.1.2 Abstração no Design de Máquinas
6+
7+
:::info Em Tradução
8+
Esta seção está sendo preparada para tradução. O conteúdo completo será adicionado em breve.
9+
10+
Contribuições são bem-vindas! Se você gostaria de ajudar na tradução desta seção, consulte o [Guia de Tradução](/guia-traducao).
11+
:::
12+
13+
## Visão Geral
14+
15+
Esta seção demonstra como usar abstração no design de máquinas de registradores:
16+
17+
- Construção de máquinas a partir de componentes reutilizáveis
18+
- Definição de operações compostas
19+
- Decomposição de problemas complexos em partes mais simples
20+
- Similaridades entre abstração de máquinas e abstração de funções
21+
22+
## Tópicos Principais
23+
24+
- Reuso de designs de máquinas
25+
- Operações de alto nível vs. primitivas
26+
- Composição de máquinas
27+
- Hierarquia de abstrações
28+
29+
## Exercícios
30+
31+
Exercícios sobre o uso de abstração para simplificar o design de máquinas de registradores.
32+
33+
---
34+
35+
**Nota**: Esta subseção ilustra princípios de engenharia de software aplicados ao design de hardware.

docs/chapter-5/5.1.3.mdx

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
title: 5.1.3 Sub-rotinas
3+
---
4+
5+
# 5.1.3 Sub-rotinas
6+
7+
:::info Em Tradução
8+
Esta seção está sendo preparada para tradução. O conteúdo completo será adicionado em breve.
9+
10+
Contribuições são bem-vindas! Se você gostaria de ajudar na tradução desta seção, consulte o [Guia de Tradução](/guia-traducao).
11+
:::
12+
13+
## Visão Geral
14+
15+
Esta seção explica como implementar sub-rotinas em máquinas de registradores:
16+
17+
- Conceito de sub-rotinas em linguagem de máquina
18+
- Mecanismo de chamada e retorno
19+
- Uso do registrador `continue` para armazenar endereços de retorno
20+
- Implementação de procedimentos reutilizáveis
21+
22+
## Tópicos Principais
23+
24+
- Chamadas de sub-rotinas
25+
- Endereços de retorno
26+
- Registrador `continue`
27+
- Passagem de controle entre seções de código
28+
- Comparação com chamadas de função de alto nível
29+
30+
## Exercícios
31+
32+
Exercícios sobre design e implementação de sub-rotinas em máquinas de registradores.
33+
34+
---
35+
36+
**Nota**: Sub-rotinas são o equivalente em linguagem de máquina das funções em linguagens de alto nível.

docs/chapter-5/5.1.4.mdx

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
title: 5.1.4 Usando uma Pilha para Implementar Recursão
3+
---
4+
5+
# 5.1.4 Usando uma Pilha para Implementar Recursão
6+
7+
:::info Em Tradução
8+
Esta seção está sendo preparada para tradução. O conteúdo completo será adicionado em breve.
9+
10+
Contribuições são bem-vindas! Se você gostaria de ajudar na tradução desta seção, consulte o [Guia de Tradução](/guia-traducao).
11+
:::
12+
13+
## Visão Geral
14+
15+
Esta seção fundamental explica como implementar recursão usando uma pilha:
16+
17+
- Introdução da estrutura de dados pilha (stack)
18+
- Operações `save` e `restore` em registradores
19+
- Implementação de processos recursivos em máquinas de registradores
20+
- Comparação entre processos iterativos e recursivos em termos de uso de pilha
21+
22+
## Tópicos Principais
23+
24+
- Estrutura de dados pilha (stack)
25+
- Operações `push` e `pop`
26+
- Salvamento e restauração de registradores
27+
- Implementação de recursão em cauda (tail recursion)
28+
- Implementação de recursão em árvore
29+
- Espaço de armazenamento para processos recursivos
30+
31+
## Exercícios
32+
33+
Exercícios incluindo:
34+
- Design de máquinas recursivas
35+
- Análise de uso de pilha
36+
- Comparação de estratégias iterativas vs. recursivas
37+
38+
---
39+
40+
**Nota**: Esta é uma das seções mais importantes do capítulo, explicando como máquinas de registradores implementam recursão.

docs/chapter-5/5.1.5.mdx

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
---
2+
title: 5.1.5 Resumo das Instruções
3+
---
4+
5+
# 5.1.5 Resumo das Instruções
6+
7+
:::info Em Tradução
8+
Esta seção está sendo preparada para tradução. O conteúdo completo será adicionado em breve.
9+
10+
Contribuições são bem-vindas! Se você gostaria de ajudar na tradução desta seção, consulte o [Guia de Tradução](/guia-traducao).
11+
:::
12+
13+
## Visão Geral
14+
15+
Esta seção fornece um resumo completo da linguagem de máquina de registradores:
16+
17+
- Referência rápida de todas as instruções
18+
- Sintaxe formal de cada tipo de instrução
19+
- Exemplos de uso
20+
- Convenções e restrições
21+
22+
## Tipos de Instruções
23+
24+
- **assign** - Atribuição a registradores
25+
- **test** - Testes booleanos
26+
- **branch** - Ramificação condicional
27+
- **go_to** - Salto incondicional
28+
- **save** - Salvar registrador na pilha
29+
- **restore** - Restaurar registrador da pilha
30+
- **perform** - Executar operação sem salvar resultado
31+
32+
## Sintaxe e Semântica
33+
34+
Descrição formal de:
35+
- Estrutura de instruções
36+
- Expressões de registrador
37+
- Operações permitidas
38+
- Constantes e rótulos
39+
40+
---
41+
42+
**Nota**: Esta seção serve como referência para as seções subsequentes do capítulo.

docs/chapter-5/5.2.1.mdx

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
---
2+
title: 5.2.1 O Modelo de Máquina
3+
---
4+
5+
# 5.2.1 O Modelo de Máquina
6+
7+
:::info Em Tradução
8+
Esta seção está sendo preparada para tradução. O conteúdo completo será adicionado em breve.
9+
10+
Contribuições são bem-vindas! Se você gostaria de ajudar na tradução desta seção, consulte o [Guia de Tradução](/guia-traducao).
11+
:::
12+
13+
## Visão Geral
14+
15+
Esta seção descreve o modelo de dados usado pelo simulador de máquina de registradores:
16+
17+
- Representação de máquinas como estruturas de dados JavaScript
18+
- Componentes internos de uma máquina (registradores, pilha, PC)
19+
- Interface de programação do simulador
20+
- Estrutura de controle e execução de instruções
21+
22+
## Tópicos Principais
23+
24+
- Estrutura de dados da máquina
25+
- Representação de registradores
26+
- Representação da pilha
27+
- Program counter (PC)
28+
- Tabela de instruções
29+
- Tabela de operações
30+
- Interface do simulador
31+
32+
## Funções Principais
33+
34+
- `make_machine` - Construir uma máquina
35+
- `get_register_contents` - Ler valor de registrador
36+
- `set_register_contents` - Definir valor de registrador
37+
- `start` - Iniciar execução da máquina
38+
39+
---
40+
41+
**Nota**: Esta seção estabelece a base para entender como o simulador funciona internamente.

docs/chapter-5/5.2.2.mdx

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
---
2+
title: 5.2.2 O Assembler
3+
---
4+
5+
# 5.2.2 O Assembler
6+
7+
:::info Em Tradução
8+
Esta seção está sendo preparada para tradução. O conteúdo completo será adicionado em breve.
9+
10+
Contribuições são bem-vindas! Se você gostaria de ajudar na tradução desta seção, consulte o [Guia de Tradução](/guia-traducao).
11+
:::
12+
13+
## Visão Geral
14+
15+
Esta seção explica como o assembler converte código de controlador em instruções executáveis:
16+
17+
- Processo de montagem (assembly)
18+
- Resolução de rótulos
19+
- Geração de instruções executáveis
20+
- Tratamento de referências a registradores e operações
21+
22+
## Tópicos Principais
23+
24+
- Análise sintática do código do controlador
25+
- Tabela de rótulos (label table)
26+
- Resolução de referências forward
27+
- Construção de objetos de instrução executáveis
28+
- Vinculação de registradores e operações
29+
30+
## Funções do Assembler
31+
32+
- `extract_labels` - Extrai rótulos do código
33+
- `update_insts` - Atualiza instruções com informações de máquina
34+
- `assemble` - Monta o código do controlador
35+
36+
## Exercícios
37+
38+
Exercícios sobre a implementação e otimização do assembler.
39+
40+
---
41+
42+
**Nota**: O assembler é crucial para transformar descrições de alto nível em código executável.

docs/chapter-5/5.2.3.mdx

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
---
2+
title: 5.2.3 Gerando Funções de Execução para Instruções
3+
---
4+
5+
# 5.2.3 Gerando Funções de Execução para Instruções
6+
7+
:::info Em Tradução
8+
Esta seção está sendo preparada para tradução. O conteúdo completo será adicionado em breve.
9+
10+
Contribuições são bem-vindas! Se você gostaria de ajudar na tradução desta seção, consulte o [Guia de Tradução](/guia-traducao).
11+
:::
12+
13+
## Visão Geral
14+
15+
Esta seção detalha como cada tipo de instrução é convertido em uma função de execução:
16+
17+
- Geração de código para cada tipo de instrução
18+
- Implementação de `assign`, `test`, `branch`, `go_to`, `save`, `restore`
19+
- Avaliação de expressões de registrador
20+
- Aplicação de operações
21+
22+
## Tópicos Principais
23+
24+
- Funções de execução para cada tipo de instrução
25+
- Tratamento de diferentes formas de `assign`
26+
- Implementação de testes e ramificações
27+
- Manipulação de pilha (`save`/`restore`)
28+
- Avaliação de expressões
29+
- Aplicação de operações primitivas
30+
31+
## Detalhes de Implementação
32+
33+
- `make_assign` - Gerar função para atribuições
34+
- `make_test` - Gerar função para testes
35+
- `make_branch` - Gerar função para ramificações
36+
- `make_go_to` - Gerar função para saltos
37+
- `make_save`/`make_restore` - Gerar funções para pilha
38+
- `make_operation_exp` - Avaliar expressões de operação
39+
40+
## Exercícios
41+
42+
Exercícios sobre modificação e extensão do gerador de código de instruções.
43+
44+
---
45+
46+
**Nota**: Esta seção mostra os detalhes de como instruções abstratas se tornam código executável.

docs/chapter-5/5.2.4.mdx

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
---
2+
title: 5.2.4 Monitorando o Desempenho da Máquina
3+
---
4+
5+
# 5.2.4 Monitorando o Desempenho da Máquina
6+
7+
:::info Em Tradução
8+
Esta seção está sendo preparada para tradução. O conteúdo completo será adicionado em breve.
9+
10+
Contribuições são bem-vindas! Se você gostaria de ajudar na tradução desta seção, consulte o [Guia de Tradução](/guia-traducao).
11+
:::
12+
13+
## Visão Geral
14+
15+
Esta seção apresenta ferramentas para monitorar e analisar o desempenho de máquinas de registradores:
16+
17+
- Contadores de instruções executadas
18+
- Rastreamento de operações de pilha
19+
- Análise de uso de registradores
20+
- Ferramentas de depuração e profiling
21+
22+
## Tópicos Principais
23+
24+
- Instrumentação do simulador
25+
- Contagem de instruções
26+
- Rastreamento de uso de pilha
27+
- Estatísticas de execução
28+
- Breakpoints e stepping
29+
- Inspeção de estado da máquina
30+
31+
## Ferramentas de Monitoramento
32+
33+
- Contador de instruções
34+
- Monitor de profundidade de pilha
35+
- Rastreador de operações
36+
- Registro de execução (trace)
37+
38+
## Exercícios
39+
40+
Exercícios sobre:
41+
- Adição de funcionalidades de monitoramento
42+
- Análise de desempenho de máquinas
43+
- Otimização baseada em profiling
44+
45+
---
46+
47+
**Nota**: Estas ferramentas são essenciais para entender e otimizar máquinas de registradores.

0 commit comments

Comments
 (0)