Buscar

Cap 7 Software Basico

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 43 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 43 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 43 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
Linguagem de Montagem 
Renato Ferreira 
Alessandro Mendes 
Daniel Macedo 
2 
Overview 
n  Introdução ao Assembly 
n  Macro e Subrotina 
n  O Processo de Montagem 
n  Linkador e Carregador 
3 
Introdução 
n  Presente em quase todos computadores 
modernos 
n  Característica do processador empregado 
n  Linguagem assembly 
n  Abstração simbólica da linguagem de 
máquina 
n  Implementada por tradução 
n  Tradução direta: assembler 
n  Execução em dois passos 
n  Geração do código de máquina 
n  Execução do novo programa diretamente pelo 
hardware 
4 
Características 
n  Linguagem assembly pura 
n  Cada comando corresponde a 1 instrução de máquina 
n  Construção de alto nível 
n  É mais simples programar em assembly do que 
diretamente em linguagem de máquina 
n  Uso de nomes e endereços simbólicos 
n  Instruções mnemônicas: ADD, SUB ... 
n  Acesso a todas as características do hardware alvo 
n  Tudo que pode ser feito na máquina, pode ser feito em 
assembly 
n  Restrita à família de processadores alvo 
5 
Por que Assembly? 
n  Programar em assembly é difícil 
n  Demora mais pra escrever um programa 
n  Depuração e manutenção complicadas 
n  Duas razões: 
n  Desempenho 
n  Acesso 
6 
Desempenho 
n  Em termos de tamanho 
n  Crítico para sistemas embutidos 
n  Em termos de velocidade 
n  Lei 90 - 10 
n  Implementar partes críticas em assembly 
n  Experiências práticas: MULTICS 
n  Função reescrita em 3 meses: 
n  26 vezes menor, 50 vezes mais rápida 
n  Função reescrita em 2 meses: 
n  20 vezes menor, 40 vezes mais rápida 
7 
Acesso 
n  Algumas tarefas exigem acesso direto 
ao hardware 
n  Tratamento de interrupções do hardware 
n  Controladores de dispositivos 
n  Sistemas modernos (Linux) 
n  Acesso às funções do processador para 
troca de contexto 
n  Boot 
8 
Razões 
n  Aspecto desempenho 
n  Compiladores atuais são muito eficientes 
n  Geram código de boa qualidade 
n  Homem x máquina 
n  Hardware está ficando muito complicado 
n  Aspecto acesso – motivo mais importante 
n  Estudo de arquiteturas 
n  Assembly está diretamente relacionada ao 
hardware 
n  Permite entender como a máquina realmente 
trabalha do ponto de vista do hardware 
9 
Formato das Instruções 
n  Está diretamente associado ao hardware 
n  Porém, possuem características comuns 
n  Instruções Assembly 
n  Representam os comandos da máquina 
n  4 campos 
n  Pseudo-instruções 
n  Usadas para reservar espaço para dados 
n  Apenas tipos básicos 
10 
Exemplos 
11 
Campo de label 
n  Usado para atribuir um nome simbólico 
para uma variável ou endereço 
n  Campo opcional 
n  Formato 
n  Posição fixa ou separador 
n  Tamanho fixo ou variável 
n  Nomes de registradores 
n  Declarações implícitas do assembler 
12 
Campo de operação 
n  Representações simbólicas das 
instruções do hardware 
n  Critério de quem fez o montador 
n  Intel: MOV 
n  Motorola: MOVE 
n  Sun: ST e LD 
n  Variantes de operações 
n  tamanho do dado tratado 
13 
Campo de operandos 
n  Especifica os alvos das operações 
n  Endereços 
n  instruções de desvio 
n  Variáveis 
n  posição de memória sendo acessada 
n  Constantes 
n  valores para operações aritméticas 
n  Registradores 
n  variáveis locais do processador 
14 
Campo de comentário 
n  Usado para acrescentar informações 
relevantes ao programa 
n  Facilitar a compreensão do mesmo 
n  Programa assembly é praticamente 
incompreensível sem esse campo 
n  Consumo humano 
n  Formato geral 
n  Indicador de início (;) 
n  Até o final da linha 
15 
Pseudo-instruções 
n  No campo de operação 
n  Instrução para o montador 
n  Diretivas do montador 
n  Relacionadas com o modo de operação da 
arquitetura 
n  Não correspondem a instruções de máquina 
n  Alocação de variáveis 
n  Criação de macros e subrotinas 
n  Definição de escopo 
n  Definição de segmentos 
n  Constantes 
16 
Definição de Macro 
n  Solução para resolver o problema da 
necessidade de se repetir um bloco de 
instruções dentro de um programa: 
n  Transformar este bloco em um procedimento. 
n  Chamar este procedimento ao invés de reescrever 
as instruções. 
n  Necessita ser declarada previamente. 
n  É uma pseudo-instrução. 
17 
Exemplo 
18 
Chamada e Expansão 
n  É necessário: 
n  Cabeçalho com o nome da macro; 
n  Bloco de instruções; 
n  Pseudo-instrução indicando o término. 
n  O montador salva a macro em uma 
tabela e quando esta é chamada, 
substitui a chamada pelo código. 
19 
Chamada e Expansão 
n  A expansão ocorre durante o processo de 
montagem e não durante a execução do 
programa. 
n  O código gerado pelo exemplo (a) é o mesmo 
do gerado pelo exemplo (b). 
n  Assembler efetuado em 2 passos: 
n  As definições de macro são salvas e todas as 
operações são realizadas 
n  Código é processado como se fosse o original. 
20 
Macros com parâmetros 
21 
Subrotina 
n  É uma chamada a procedimento. 
n  Onde houver uma chamada, o procedimento é 
invocado separadamente e ao seu término, 
retorna para o programa que originou esta 
chamada. 
n  Ocorre um desvio no código. 
22 
Macro x Subrotina 
Programa Subrotina Macro 
23 
O Processo de Montagem 
n  Tradução imediata nem sempre é possível 
n  Problema de referência posterior 
n  Tradução em dois passos 
n  Alternativa 1: 
n  armazenar as referências em uma tabela 
n  traduzir o programa 
n  solução simples 
n  Alternativa 2: 
n  gerar código intermediário 
n  editar referências desconhecidas 
n  pode ser mais eficiente 
24 
Passo 1 
n  Construção da tabela de símbolos 
n  Labels 
n  Valores produzidos por pseudo-instruções 
n  ILC – Instruction Location Counter 
n  Usado para determinar endereço em 
tempo de execução dos símbolos 
n  Inicializado com 0 
n  Incrementado do tamanho de cada 
instrução traduzida 
25 
Passo 1 
Leitura 
Label 
Pesquisa tabela de 
pseudos 
Inicialização 
Pesquisa tabela de 
operandos 
Obter tamanho da 
instrução 
Processar literais Atualizar ILC 
Determinar espaço 
p/ dados 
Tipo ? 
Executar ação 
apropriada 
Guardar label e ILC na 
tabela de símbolos 
Finalizar passo 1 e 
ir ao passo 2 
sim 
não 
encontrado END 
outros Constante/
Variável não encontrado 
26 
Passo 2 
n  Executar a tradução do programa 
n  Informação extra para o carregador 
n  Leitura sequencial do código 
n  Acessos às tabelas 
n  de instruções 
n  de símbolos 
n  Tratamento e erros 
n  Símbolos desconhecidos 
27 
Passo 2 
leitura 
pesquisa tabela 
de pseudos 
inicialização 
pesquisa tabela 
de operandos 
avaliar 
operandos 
montar as 
instruções 
imprimir instrução 
fonte e informações 
fazer conversão 
de constantes 
tipo ? 
executar ação 
apropriada 
finalizar o 
passo 2 
encontrado END 
outros Constante não encontrado 
obter tamanho, tipo e 
código da instrução 
Determinar 
espaço p/ dados 
atualizar LC 
Variável 
28 
Tabela de símbolos 
n  Criada no passo 1 para utilização no passo 2 
n  Informações coletadas sobre símbolos 
n  tamanho do campo 
n  informação de relocação 
n  regras de escopo 
n  Várias maneiras de organizar a tabela 
n  Memória associativa: par (símbolo,valor): 
n  Forma mais simples: vetor de registros 
n  Forma mais esperta: tabela hash 
29 
Ligação e carga 
n  A maioria dos programas é constituída por 
maisde um procedimento. 
n  Os montadores traduzem um 
procedimento por vez, gerando um 
programa-objeto. 
n  Para um programa rodar, todos os 
procedimentos devem estar ligados. 
n  Como resolver isto? 
30 
Linker 
n  Funções: 
n  Alocação: aloca espaço na memória para o 
programa. 
n  Ligação: une os procedimentos e resolve 
as referências entre os módulos. 
n  Relocação: ajusta os endereços que 
dependem da posição do programa na 
memória. 
31 
Tradução completa 
n  Constituída de duas fases: 
n  1. Montagem dos procedimentos. 
n  2. Ligação dos módulos-objetos. 
n  Ao final, teremos um programa binário 
executável. 
32 
Tradução completa 
33 
Exemplo de ligação 
34 
Exemplo de ligação 
35 
Problemas para o linker 
n  Problema da relocação: 
n  Após a ligação dos módulos, os endereços 
devem ser recalculados 
n  Indicar local do programa na memória no 
momento da execução 
n  Problema da referência externa: 
n  Definir o endereço dos módulos-objetos. 
Estrutura de um módulo 
n  Tabela de pontos de entrada 
n  Lista de funções acessíveis externamente 
ao módulo 
n  Uso de pseudo-instrução EXTERN 
n  Tabela de referências de entrada 
n  Variáveis e símbolos usados no módulo, 
mas definidos em outro local 
36 
Estrutura de um módulo 
n  Código traduzido 
n  Instruções de máquina e constantes 
n  Única parte do módulo efetivamente 
carregada em memória 
n  Dicionário de relocação 
n  Lista de desvios a serem relocados 
37 
Ligação dinâmica 
n  Módulos de programa que não são ligados 
ao executável final 
n  Uso 1: código frequentemente acessado 
por muitos programas 
n  Executáveis menores 
n  Possível compartilhamento de código entre 
programas 
n  Uso 2: não carregar código raramente 
utilizado 38 
Modalidades de carga 
dinâmica 
n  Endereçamento indireto 
n  Programa identifica onde o módulo está na 
memória 
n  Seção do módulo indica localização do 
desvio no módulo dinâmico 
 
39 
Modalidades de carga 
dinâmica 
n  Carga implícita 
n  Desvios para referências externas geram 
um trap 
n  Traps chamam o ligador, que carrega o 
código e resolve as referências externas 
n  Requer bibliotecas de importação: indicam 
quais módulos o programa emprega, para 
auxiliar o loader 
40 
Modalidades de carga 
dinâmica 
n  Carga explícita 
n  Programa chama o loader 
n  Programa indica dados necessários para o 
loader identificar a biblioteca 
41 
Carga dinâmica - Exemplos 
n  Multics 
n  Segmento de ligação 
n  Programas referenciam início do módulo a 
ser carregado 
n  Carga implícita 
42 
Carga dinâmica - exemplos 
n  Windows 
n  DLL – Dynamic Link Library 
n  Bibliotecas são compartilhadas entre 
programas (mapeamento nos endereços 
virtuais do programa) 
n  Carga explícita ou implícita 
n  UNIX 
n  Shared libraries (libXXX.so) 
n  Carga implícita 
43

Continue navegando