Post on 19-Aug-2020
DCA-FEEC-UNICAMP: Introdução à Computação Digital - julho2011 - Prof. Léo Pini Magalhães 559
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 - julho2011 - Prof. Léo Pini Magalhães 560
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 - julho2011 - Prof. Léo Pini Magalhães 561
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 - julho2011 - Prof. Léo Pini Magalhães 562
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 - julho2011 - Prof. Léo Pini Magalhães 563
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 - julho2011 - Prof. Léo Pini Magalhães 564
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 - julho2011 - Prof. Léo Pini Magalhães 565
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 – julho 2011 - Prof. Léo Pini Magalhães 566
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 ; pseudo instrução - porta de status da interfaceRD: EQU 10002 ; pseudo instrução - porta de dados (saída)
DCA-FEEC-UNICAMP: Introdução à Computação Digital - julho2011 - Prof. Léo Pini Magalhães 567
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 ; pseudo instrução - porta de controle da interface
DCA-FEEC-UNICAMP: Introdução à Computação Digital - julho2011 - Prof. Léo Pini Magalhães 568
Linguagem de Montagem – cont.
Exemplos de Instruções Assembly – cont.
• ARM – como máquina de 2 endereços (opção Thumb)
MOV R2, R1 ; R2 � (R1)
• ARM – como máquina de 3 endereços
ADD R1, R2, #4 ; R1 � (R2) + 4
Exemplo de teste de estado de Interface (no simulador #ARMSim via SWI)
PROG: SWI 0x202 ; entrada do estado para R0CMP R0, #0x01 ; testa o bit 0 da palavra de estado
DCA-FEEC-UNICAMP: Introdução à Computação Digital - julho2011 - Prof. Léo Pini Magalhães 569
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 - julho2011 - Prof. Léo Pini Magalhães 570
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 - julho2011 - Prof. Léo Pini Magalhães 571
Linguagem de Montagem – cont.Exemplos de Pseudo-Instruções no ARM (Simulador )– cont.
Definição de conteúdo de memória
x: .word 5000 ; a posição de memória conterá o valor 5000
Definição de fim de programa (com relação a montagem)
.end
Exemplo: o reg. R1 recebe o conteúdo da constante x que é 5000
x: .word 5000
LDR R2, =x
LDR R1, [R2]
DCA-FEEC-UNICAMP: Introdução à Computação Digital - julho2011 - Prof. Léo Pini Magalhães 572
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 - julho2011 - Prof. Léo Pini Magalhães 573
Tarefas de um Montador-cont.exemplo de tradução por um montador (palavra de 16 bits) – Motorola 68000
N° comando Instrução End. Relativo Código Objeto
0 A: DW 10 0 00000000000010101 B: DW 20 2 00000000000101002 C: DS 7 4 0000000000000000
: :: :
16 00000000000000003 MOVE A,D1 18 0011001000111000
20 00000000000000004 LOOP: ADD B, D1 22 1101001000111000
24 00000000000000105 MOVE D1, C 26 0011000111000001
28 0000000000000100: : : :n END
DCA-FEEC-UNICAMP: Introdução à Computação Digital - julho2011 - Prof. Léo Pini Magalhães 574
Tarefas de um Montador-cont.exemplo de tradução por um montador (palavra de 16 bits) – Motorola 68000
N° comando Instrução End. Relativo Código Objeto
0 A: DW 10 0 00000000.000010101 B: DW 20 2 00000000.000101002 C: DS 7 4 0000000000000000
: :: :
16 00000000000000003 MOVE A,D1 18 0011001000111000
20 00000000000000004 LOOP: ADD B, D1 22 1101001000111000
24 00000000000000105 MOVE D1, C 26 0011000111000001
28 0000000000000100: : : :n END
byte0 , 12, 3
7 x 2bytes
end.A
end.C
end.B
modo Abs. - Reg.
DCA-FEEC-UNICAMP: Introdução à Computação Digital - julho2011 - Prof. Léo Pini Magalhães 575
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 anterior: endereços 18 a 21 (em bytes)
end. 18
end. 20
modo000000
DCA-FEEC-UNICAMP: Introdução à Computação Digital - julho2011 - Prof. Léo Pini Magalhães 576
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 - julho2011 - Prof. Léo Pini Magalhães 577
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 - julho2011 - Prof. Léo Pini Magalhães 578
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
Mnemônico Código de Operação Comprimento
(bytes)
Rotina de
Tratamento
de operandos
: : : :
MOVE 00xx ???????? ?????? 2 a 6 RMOV
RTS 0100 1110 0111 0101 2 RRTS
: : : :
00=byte; 10=long; 11=word
DCA-FEEC-UNICAMP: Introdução à Computação Digital - julho2011 - Prof. Léo Pini Magalhães 579
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 - julho2011 - Prof. Léo Pini Magalhães 580
Estruturas de dados no processo de
montagem – cont.
Tabela de Pseudo-Instruções – TPI – cont.
Exemplo de tabela TPI – Tabela de Pseudoinstruções
Mnemônico Comprimento
(bytes)
Rotina de
Tratamento
: : :
ORG - RORG
DW 2 RDW
DC.B 1 :
DC.W 2 :
DC.L 4 :
: : :
DCA-FEEC-UNICAMP: Introdução à Computação Digital - julho2011 - Prof. Léo Pini Magalhães 581
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 573)
Símbolo Valor
(em decimal)
A 0000
B 0002
C 0004
LOOP 0022
DCA-FEEC-UNICAMP: Introdução à Computação Digital - julho2011 - Prof. Léo Pini Magalhães 582
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 - julho2011 - Prof. Léo Pini Magalhães 583
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 - julho2011 - Prof. Léo Pini Magalhães 584
não encontrou
O processo de montagem – cont.
CP ← 0
lê
CP ← valor
CP ← CP + L
PASSO 2
busca TPI
busca TIM
L ← comprimentodos dados
L ← comprimentoda instrução
guardar rótulo na TScom CP
encontrou
encontrou
ORGEQU ENDDWDS
não encontrou
Passo 1 – processar símbolos
ERRO
guardar rótulo na TScom valor
DCA-FEEC-UNICAMP: Introdução à Computação Digital - julho2011 - Prof. Léo Pini Magalhães 585
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 - julho2011 - Prof. Léo Pini Magalhães 586
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 - julho2011 - Prof. Léo Pini Magalhães 587
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 573 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 - julho2011 - Prof. Léo Pini Magalhães 588
Exemplo – cont.
TIM - TABELA DE INSTRUÇÕES DE MÁQUINA
Mnemônico
(*)
Código de
Operação
(hexadecimal)
Comprimento
(bytes)
Rotina de
Tratamento
de operandos
MOVE R0 11 3 RMOV
MVI R1 21 2 RMVI
HLT 00 1 RHLT
JNZ 60 3 RJMP
DCR R0 30 1 RDCR
: : : :
(*) só está representada a parte que gera o C.O.
DCA-FEEC-UNICAMP: Introdução à Computação Digital - julho2011 - Prof. Léo Pini Magalhães 589
Exemplo – cont.
Mnemônico Rotina de
Tratamento
ORG RORG
END REND
DS RDS
DW RDW
: :
TPI - TABELA DE PSEUDOINSTRUÇÕES
DCA-FEEC-UNICAMP: Introdução à Computação Digital - julho2011 - Prof. Léo Pini Magalhães 590
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 - julho2011 - Prof. Léo Pini Magalhães 591
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 Símbolo Valor
START 0100
VOLTA 0103
DADO 010A
Tabela de Símbolos
DCA-FEEC-UNICAMP: Introdução à Computação Digital - julho2011 - Prof. Léo Pini Magalhães 592
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 - julho2011 - Prof. Léo Pini Magalhães 593
9.7 Exercícios
1. Resolva os exercícios (1) a (6) do livro texto.
2. Considere o simulador ARM e o Assembler explicado neste capítulo. Forneça o equivalente no ARM para as seguintes pseudo instruções: ORG, GLOB, EXTERN, DW, END, EQU, DS, ADR. Foi possível mapear todas ? Hápseudos no Simulador não definidas neste capítulo ?