INF1018 - Software Básico
Programa do Curso
Objetivo do Curso: Entender em profundidade como funciona um computador
típico, como visto pelo nível de Linguagem de Montagem e pela Linguagem de
Máquina.
- Introdução - Hierarquia de abstrações em um computador: Hardware,
Linguagem de Máquina, Sistema Operacional, Linguagens de Alto Nível,
Aplicativos.
- Arquitetura Clássica: CPU, memória principal, memória secundária,
dispositivos de Entrada/Saída.
- CPU: ciclo de execução. Registradores (PC, Flags, SP).
- Memória principal: bits e bytes; palavras e endereçamento.
- Armazenamento e Representação de tipos básicos:
- base binária, inteiros, magnitude-sinal, complemento a dois, excesso-K.
Operações básicas. Overflow.
- caracteres: código ASCII, código ISO, outros códigos.
- strings.
- ponto flutuante: o padrão IEEE.
- instruções e endereços.
- Implementação de arrays e registros; ``padding"; arrays e registros
aninhados; cálculo de tamanho e código de endereçamento.
- Linguagem de montagem: Motivação. Labels, mnemônicos, variáveis
(estáticas), strings; programa montador. Exemplos e exercícios de pequenos
programas em uma linguagem de montagem.
- Conjunto típico de instruções:
- transferência de dados: modos de endereçamento, alinhamento
- aritméticas
- lógicas
- condições e saltos
- pilha e chamadas
- Entrada/Saída
- Interrupções; tipos de interrupções: instrução explícita, erros de
execução (traps), e geradas pelo hardware (assíncronas).
- Modelo de Execução de Uma Linguagem de Alto Nível (C) Implementação de
instruções:
- expressões aritméticas (uso de temporários/registradores)
- atribuição
- loops e condicionais
- Pilha de execução: registro de ativação, suporte a chamadas recursivas.
Modelo de Chamadas e passagem de parâmetros. Criação e eliminação de registros
de ativação; cadeia dinâmica. Organização de memória: área estática, pilha,
heap.
- Visão geral do Sistema Operacional. O Sistema Operacional como uma
biblioteca prestadora de serviços. Formas de chamar rotinas do S.O.: chamadas
diretas (interrupções, como no DOS) e chamadas via biblioteca convencional
(como no UNIX). Entrada e saída via terminal. Gerenciamento de Memória.
- ``Link-edição": o problema da (re)locação de um programa. Endereçamento
relativo e absoluto. Compilação independente; programa objeto e tabelas de
relocação. Funcionamento de um ligador.