Post on 09-Dec-2018
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 459
9. Software de Sistema - Montadores(capítulo 9 do livro texto)
CarregadoresMontadorCompiladores
Sistema Operacional(Gerenciador de Processador, Memória, E/S, etc)
Microprogramas
Circuitos Físicos
LigadoresProcessadorde Macro
Depuradores
ProgramasUtilitários
Programasde Aplicação
Usuário SoftwareAplicativo
SoftwaredeSistema
Hardware
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 460
Software de Sistema – cont.
Software de Sistema é um conjunto de programas que define a maneira como os diversos elementos do hardware devem operar de modo a resolver os problemas dos usuários de forma simples e eficiente.
SISTEMA COMPUTACIONAL = HARDWARE + SOFTWARE DE SISTEMA
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 461
Software de Sistema – cont.
Sem um software de sistema os usuários seriam responsáveis pelo controle direto de todas as operações executadas pelos elementos de hardware.
• os programas seriam escritos em linguagem de máquina;
• o programador seria responsável pelo carregamento, na memória, do programa a ser executado;
• não seria fácil utilizar os mecanismos de entrada e saída, exigindo-se conhecimento das peculiaridades de cada periférico e fazendo com que o esforço de programação fosse desviado do problema a ser resolvido;
• o programador seria responsável pelo gerenciamento do uso da memória para garantir a completa execução de um programa;
• em caso de sistemas com múltiplos usuários, o gerenciamento dos recursos existentes e a sincronização entre os diversos programas seriam extremamente complexos; etc.
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 462
9.1 Montadores (Assemblers)
Um Montador é um programa cujos dados de entrada são sequências de caracteres que constituem o programa em Linguagem Simbólica, de Montagem ou "Assembly", e cujo resultado é um conjunto de palavras de máquina (sequências de bits) que constituem o programa em linguagem de máquina.
O programa gerado, em linguagem de máquina, pode ser carregado na memória e executado ("load and go"), ou ser a entrada de outro programa, o Carregador, que após algum processamento para adequar os endereços ao bloco de memória disponível, carrega-o na memória para ser executado.
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 463
Montadores (Assemblers) – cont.
MONTADOR
tabelas
Programa emlinguagem de
montagem( Assembly )
Programa emlinguagem demáquina
Esquema de funcionamento de um Montador típico
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 464
9.2 Linguagem de Montagem – L. Assembly
FORMATO GENÉRICO DE INSTRUÇÃO
<RÓTULO> <CÓDIGO DE OPERAÇÃO> <OPERANDOS/MODIFICADORES> <COMENTÁRIOS>
RÓTULO - composto de variáveis alfanuméricas, iniciando com letras, identifica endereços onde são armazenados instruções e dados;
CÓDIGO DE OPERAÇÃO - conjunto de letras que formam mnemônicos para as instruções;
OPERANDOS - identificam variáveis, pelos rótulos, ou registradores da UCP;
MODIFICADORES - identificam modos de endereçamento;
COMENTÁRIOS - descrevem o programa.
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 465
Linguagem de Montagem – cont.
Exemplo:
ROT: MOVE R1,R2 ; armazena o conteúdo do registrador R1 em R2
DELIMITADORES
Os campos da instrução em linguagem simbólica são separados por delimitadores.
Novamente, estes delimitadores são definidos pelo projetista do MONTADOR.
Exemplos de delimitadores: espaço - entre campos
: - separa o rótulo ; - separa o comentário , - separa operandos
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 466
Linguagem de Montagem – cont.
Exemplos de Instruções Assembly
• Máquina de 1 endereço
LDA S1 ; load S1 em Acc ou Acc � (S1)
ADD S2 ; Acc � (Acc) + (S2)
STORE R ; store R ou R � (Acc)
Exemplo de programa de Saída de dado (isolada)
LOOP: IN RS ; leitura do registrador RSTSTBIT 2 ; bit 2 de RS=1 ?JNZ LOOP ; loop de espera ou saída de dado ?LDA dado ; Acc � (dado)OUT RD ; porta RD � (Acc): : : :
RS: EQU 10000 ; porta de status da interfaceRD: EQU 10002 ; porta de dados (saída)
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 467
Linguagem de Montagem – cont.
Exemplos de Instruções Assembly – cont.
• Máquina de 2 endereços
MOVE S1, R ; R � (S1)
ADD S2, R ; R � (R) + (S2)
Exemplo de programação de Interface (E/S mapeada)
PROG: MOVE #10, RC ; RC � 10: : : : : : : :
RC: EQU 1000A ; porta de controle da interface
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 468
Linguagem de Montagem – cont.Exemplos de Pseudo-Instruções
Pseudo-instruções facilitam a programação. São diretrizes para os programasmontadores, não gerando código executável.
DC / DW / DB - atribui a uma posição da memória um valor (dado);
CINCO: DW 5 ; a posição de memória referenciada por CINCO recebe o valor 5
DS - define área alocada em quantidade de palavras/bytes
AREA: DS 20 ; reserva 20 posições:
MOVE #3,AREA+5 ; acesso à área especificada
EQU - define rótulo
ABC: EQU 1028 ; o rótulo ABC equivale à posição de memória 1028
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 469
Linguagem de Montagem – cont.Exemplos de Pseudo-Instruções – cont.
ORG - define origem
ORG 1000 ; o que segue (dado ou instrução) estará na posição 1000
ADR - define que a posição contém o endereço do rótulo especificado
X1: DW 12:
AX1: ADR X1 ; a posição AX1 contém o endereço X1
END - define fim de programa
Exemplo: ......ORG 5000
X1: DW 12: : : :
AX1: ADR X1 ; conteúdo de AX1 é o end. de X1
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 470
9.3 Tarefas de um Montador
Para traduzir o programa em linguagem simbólica para um programa em linguagem de máquina, o Montador deve :
a. substituir os mnemônicos da instrução e modificadores de endereço pelosequivalentes binários;
b. determinar posições de memória, relativas ao programa, para os endereçossimbólicos (rótulos);
c. substituir todas as referências a um dado endereço simbólico pelo endereçobinário correspondente.
Para determinar posições de memória para os endereços simbólicos (b), o
montador utiliza a informação dada pelo programador nas pseudoinstruções;
estas não são traduzidas para Linguagem de Máquina, servindo somente
para orientar o montador na geração do programa em linguagem de máquina.
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 471
Tarefas de um Montador-cont.exemplo de tradução por um montador (palavra de 16 bits) – Motorola 68000
ENDn::::
000000000000010028001100011100000126MOVE D1, C5000000000000001024110100100011100022LOOP: ADD B, D14000000000000000020001100100011100018MOVE A,D13000000000000000016
::::
00000000000000004C: DS 7200000000000101002B: DW 20100000000000010100A: DW 100
Código ObjetoEnd. RelativoInstruçãoN° comando
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 472
Tarefas de um Montador-cont.exemplo de tradução por um montador (palavra de 16 bits) – Motorola 68000
ENDn::::
000000000000010028001100011100000126MOVE D1, C5000000000000001024110100100011100022LOOP: ADD B, D14000000000000000020001100100011100018MOVE A,D13000000000000000016
::::
00000000000000004C: DS 7200000000.000101002B: DW 20100000000.000010100A: DW 100
Código ObjetoEnd. RelativoInstruçãoN° comando byte0 , 12, 3
7 x 2bytes
end.A
end.C
end.B
modo Abs. - Reg.
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 473
Código de máquina (68000) �
0 0 x x y y y z z z y y y z z z
size op.destino op.fonte
MOVE A, D1
001word=11 111
seguido do valor do rótulo A (seu endereço)
Na transparência 472: endereços 18 a 21 (em bytes)
end. 18
end. 20
modo000000
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 474
9.4 Estruturas de dados no processo de
montagem
Montador
(ASM)
P L M
T P IT I M
P F
T S
Programa Fonte Programa em Linguagem deMáquina
Tabela de Símbolos
Tabela de Instruções deMáquina
Tabela de Pseudo-Instruções
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 475
Estruturas de dados no processo de
montagem – cont.Tabela de Instruções de Máquina - TIM
• TIM associa o mnemônico de uma instrução com a instrução de máquina em binário• a tabela TIM – a seguir - pode possuir vários campos com informações relevantes.
O número de campos que compõe a tabela TIM depende de características específicas do processador e da sintaxe da linguagem simbólica.
Dois campos estão sempre presentes na tabela TIM :
MNEMÔNICO - onde estão os mnemônicos das instruções, definidos pela sintaxe da linguagem simbólica.
CÓDIGO DE OPERAÇÃO - onde estão os códigos de operação das instruções de máquina.
Outros campos podem completar a informação :
COMPRIMENTO DA INSTRUÇÃO (em bytes) - contém o comprimento da instrução.
ROTINA DE TRATAMENTO DE OPERANDOS - onde estão relacionadas as rotinas que o montador deve ativar para gerar o endereço dos operandos, quando estes são expressões ou dependem dos modos de endereçamento.
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 476
Estruturas de dados no processo de
montagem – cont.
Tabela de Instruções de Máquina – TIM – cont.
Exemplo de tabela TIM - TABELA DE INSTRUÇÕES DE MÁQUINA
::::
RRTS20100 1110 0111 0101RTS
RMOV2 a 600xx ???????? ??????MOVE
::::
Rotina de
Tratamento
de operandos
Comprimento
(bytes)
Código de OperaçãoMnemônico
00=byte; 10=long; 11=word
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 477
Estruturas de dados no processo de
montagem – cont.
Tabela de Pseudo-Instruções – TPI
• relaciona o mnemônico da pseudoinstrução com a rotina que o montador deveativar para processar a pseudoinstrução
• a tabela TPI pode possuir vários campos com informações relevantes.
Dois campos estão sempre presentes na tabela TPI :
MNEMÔNICO - onde estão os mnemônicos das pseudoinstruções, definidos pela sintaxe da linguagem simbólica.
ROTINA DE TRATAMENTO DE OPERANDOS - onde estão relacionadas as rotinas que o montador deve ativar para processar a pseudoinstrução.
Outros campos podem completar a informação, como :
COMPRIMENTO DA PSEUDOINSTRUÇÃO - contém o número de bytes ou palavras que deve ser reservado para pseudoinstruções como em DB (Define Byte) ou DW (Define Word).
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 478
Estruturas de dados no processo de
montagem – cont.
Tabela de Pseudo-Instruções – TPI – cont.
Exemplo de tabela TPI – Tabela de Pseudoinstruções
:::
:4DC.L
:2DC.W
:1DC.B
RDW2DW
RORG-ORG
:::
Rotina de
Tratamento
Comprimento
(bytes)
Mnemônico
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 479
Estruturas de dados no processo de
montagem – cont.Tabela de Símbolos - TS
A Tabela de Símbolos é construída durante a montagem e relaciona cada símbolo (ou rótulo) definido no código fonte com um valor em representação binária do seu endereço de memória.
Exemplo de tabela TS – Tabela de Símbolos
(para o exemplo da transparência 472)
0022LOOP
0004C
0002B
0000A
Valor
(em decimal)
Símbolo
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 480
9.5 O processo de montagem
Para realizar a tradução, os Montadores são geralmente implementados como Montadores de dois Passos.
Os dois Passos significam que o Montador deverá ler o programa fonte duas vezes.
Existem Montadores de 1 Passo, onde o programa fonte é lido uma única vez; porém, este fato implica em restrições no programa fonte (ver Exercícios 3, 5 e 6 do livro texto).
Para o Montador de dois Passos:
. no primeiro passo o Montador lê o código fonte e determina os endereçospara as referências simbólicas, construindo a Tabela de Símbolos.
. no segundo passo o código fonte é lido novamente e os mnemônicos dasinstruções e referências simbólicas são substituídos por códigos demáquina.
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 481
O processo de montagem – cont.
As tarefas associadas aos dois passos são:
PASSO 1 - Definir símbolos (rótulos)
• processar pseudoinstruções, utilizando a Tabela de Pseudoinstruções; • determinar o comprimento da instrução de máquina, de acordo com a
Tabela de Instruções de Máquina; • atualizar o contador de posições CP, de acordo com o comprimento
de cada instrução ou pseudoinstrução; • guardar os valores dos símbolos (endereço equivalente) na Tabela de
Símbolos.
PASSO 2 - Gerar o programa em linguagem de máquina
• substituir símbolos por valores indicados na Tabela de Símbolos; • gerar instruções de máquina; • gerar dados (constantes definidas).
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 482
não encontrou
O processo de montagem – cont.
CP ← 0
lê
CP ← valor
CP ← CP + L
PASSO 2
L ← 0
busca TPI
busca TIM
L ← comprimentodos dados
L ← comprimentoda instrução
guardar rótulo = CP na TS
encontrou
encontrou
ORGEQU ENDDWDS
não encontrou
Passo 1 – processar símbolos
ERRO
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 483
O processo de montagem – cont.
Passo 2 – gerar códigosCP ← 0
lê
CP ← valor
CP ← CP + L
FIM
busca TPI
busca TIMcalcula / insere
constante
L ← comprimentodos dados
L ← comprimentoda instrução
processaC.O.
processaoperandos
insereno PLM
encontrou
encontrou
ORG EQU ENDDSDWnão encontrou
A cada instrução lida é feita a busca nas tabelas TPI e TIM. No Passo 2 não énecessário prover um tratamento de erro quando a instrução não pertencer às tabelas TIM e TPI; o tratamento de erro é ativado no Passo 1 e o Passo 2 não éexecutado.
No Passo 2 o contador de posições CP é zerado e o programa fonte é lido novamente.
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 484
O processo de montagem – Fluxo de Dados
As estruturas de dados manipuladas nos passos 1 e 2 são:
• Programa Montador (ASM); • Contador de posições (CP);• Tabela de Instruções de Máquina (TIM); • Tabela de Pseudoinstruções (TPI); • Tabela de Símbolos (TS); • Programa em linguagem de Máquina (PLM).
PLMASM
PASSO 2PASSO 1
TIM
TPI
CP CP
TS
PF
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 485
9.6 Exemplo
ORG 0100HSTART: MOVE DADO,R0VOLTA: DCR R0
JNZ VOLTA MVI #11H,R1HLT
DADO: DW 20HEND
Para ilustrar as diferenças entre processadores, neste exemplo, diferentemente do apresentado na transparência 472 temos palavra de 8 bits (1 byte) bem como outros códigos de operação e comprimentos de instrução.
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 486
Exemplo – cont.
TIM - TABELA DE INSTRUÇÕES DE MÁQUINA
::::
RDCR130DCR R0
RJMP360JNZ
RHLT100HLT
RMVI221MVI R1
RMOV311MOVE R0
Rotina de
Tratamento
de operandos
Comprimento
(bytes)
Código de
Operação
(hexadecimal)
Mnemônico
(*)
(*) só está representada a parte que gera o C.O.
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 487
Exemplo – cont.
::
RDWDW
RDSDS
RENDEND
RORGORG
Rotina de
Tratamento
Mnemônico
TPI - TABELA DE PSEUDOINSTRUÇÕES
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 488
Exemplo – cont.No Passo 1 é gerada a tabela TS a partir do processamento do comprimento das instruções conforme mostrado a seguir.
Endereço (CP)0100 START: MOVE DADO,R0010101020103 VOLTA: DCR R0 0104 JNZ VOLTA 010501060107 MVI #11H,R101080109 HLT010A DADO: DW 20H
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 489
Exemplo – cont.No Passo 1 é gerada a tabela TS a partir do processamento do comprimento das instruções conforme mostrado a seguir.
Endereço (CP)0100 START: MOVE DADO,R0010101020103 VOLTA: DCR R0 0104 JNZ VOLTA 010501060107 MVI #11H,R101080109 HLT010A DADO: DW 20H
010ADADO
0103VOLTA
0100START
ValorSímbolo
Tabela de Símbolos
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 490
Exemplo – cont.Seguindo o algoritmo descrito no Passo 2 e utilizando a tabela gerada no Passo 1, obtemos o seguinte PLM (devemos observar que os endereços dos operandos estão armazenados em 2 bytes, por exemplo nos endereços 101-102 e 105-106) :
Endereço PLM (em hexadecimal)0100 110101 010102 0A0103 300104 600105 010106 030107 210108 110109 00010A 20
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães 491
9.7 Exercícios
1. Resolva os exercícios (1) a (6) do livro texto.