9. Software de Sistema - Montadores - DCA

Propaganda
9. Software de Sistema - Montadores
(capítulo 9 do livro texto)
Usuário
Programas
Programas
de Aplicação
Utilitários
Depuradores Processador Ligadores
de Macro
Compiladores
Montador
Carregadores
Sistema Operacional
(Gerenciador de Processador, Memória, E/S, etc)
Software
Aplicativo
Software
de
Sistema
Microprogramas
Hardware
Circuitos Físicos
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães
459
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
460
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
461
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
462
Montadores (Assemblers) – cont.
Esquema de funcionamento de um Montador típico
Programa em
linguagem de
montagem
( Assembly )
MONTADOR
Programa em
linguagem de
máquina
tabelas
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães
463
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
464
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
465
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:
RS:
RD:
IN
TSTBIT
JNZ
LDA
OUT
: : : :
EQU
EQU
RS
2
LOOP
dado
RD
; leitura do registrador RS
; bit 2 de RS=1 ?
; loop de espera ou saída de dado ?
; Acc (dado)
; porta RD (Acc)
10000
10002
; porta de status da interface
; porta de dados (saída)
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 – 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:
RC:
MOVE
::::
EQU
#10, RC ; RC 10
: : : :
1000A ; porta de controle da interface
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães
467
Linguagem de Montagem – cont.
Exemplos de Pseudo-Instruções
Pseudo-instruções facilitam a programação. São diretrizes para os programas
montadores, 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
:
MOVE #3,AREA+5
; reserva 20 posições
; 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
468
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:
......
X1:
AX1:
ORG 5000
DW
12
::::
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
469
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.
b.
c.
substituir os mnemônicos da instrução e modificadores de endereço pelos
equivalentes binários;
determinar posições de memória, relativas ao programa, para os endereços
simbólicos (rótulos);
substituir todas as referências a um dado endereço simbólico pelo endereço
biná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
470
Tarefas de um Montador-cont.
exemplo de tradução por um montador (palavra de 16 bits) – Motorola 68000
N° comando
0
1
2
Instrução
A: DW 10
B: DW 20
C: DS 7
3
4
MOVE A,D1
LOOP:
ADD
B, D1
5
MOVE D1, C
:
n
:
END
End. Relativo
0
2
4
:
:
16
18
20
22
24
26
28
:
Código Objeto
0000000000001010
0000000000010100
0000000000000000
:
:
0000000000000000
0011001000111000
0000000000000000
1101001000111000
0000000000000010
0011000111000001
0000000000000100
:
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
N° comando
0
1
2
Instrução
A: DW 10
B: DW 20
C: DS 7
modo Abs. - Reg.
3
4
5
:
n
MOVE A,D1
LOOP:
ADD
B, D1
MOVE D1, C
:
END
End. Relativo
0
2
4
:
:
16
18
20
22
24
26
28
:
Código Objeto
00000000.00001010
00000000.00010100
0000000000000000
:
:
0000000000000000
0011001000111000
0000000000000000
1101001000111000
0000000000000010
0011000111000001
0000000000000100
:
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães
byte
0,1
2, 3
7x2
bytes
end.A
end.B
end.C
472
Código de máquina (68000)
Na transparência 472: endereços 18 a 21 (em bytes)‫‏‬
size op.destino op.fonte
end. 18
00 x x yyyzzz yyyzzz
word=11
001
MOVE A, D1
end. 20
000 111
modo
000
seguido do valor do rótulo A (seu endereço)
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães
473
9.4 Estruturas de dados no processo de
montagem
Tabela de Símbolos
TS
PF
Programa Fonte
Montador
(ASM)
TIM
Tabela de Instruções de
Máquina
PLM
Programa em Linguagem de
Máquina
TPI
Tabela de Pseudo-Instruções
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães
474
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
475
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 ???????? ??????
2a6
RMOV
RTS
0100 1110 0111 0101
2
RRTS
:
:
:
:
00=byte; 10=long; 11=word
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 Pseudo-Instruções – TPI
•
•
relaciona o mnemônico da pseudoinstrução com a rotina que o montador deve
ativar 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
477
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 - 2009 - Prof. Léo Pini Magalhães
478
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)
Símbolo
Valor
(em decimal)
A
0000
B
0002
C
0004
LOOP
0022
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães
479
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ços
para as referências simbólicas, construindo a Tabela de Símbolos.
. no segundo passo o código fonte é lido novamente e os mnemônicos das
instruções e referências simbólicas são substituídos por códigos de
máquina.
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães
480
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
481
O processo de montagem – cont.
Passo 1 – processar símbolos
CP ← 0
lê
busca TPI
não
encontrou
ERRO
encontrou
não encontrou
DW
DS
EQU
PASSO 2
busca TIM
encontrou
L ← comprimento L ← comprimento
da instrução
dos dados
END
ORG
L←0
CP ← valor
guardar rótulo = CP
na TS
CP ← CP + L
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães
482
O processo de montagem – cont.
CP ← 0
Passo 2 – gerar códigos
No Passo 2 o contador de
posições CP é zerado e o
programa fonte é lido
novamente.
lê
busca TPI
encontrou
DW
DS
não encontrou
calcula / insere
busca TIM
constante
encontrou
L ← comprimento L ← comprimento
da instrução
dos dados
processa
C.O.
processa
operandos
insere
no PLM
CP ← CP + L
ORG
EQU END
FIM
CP ← valor
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.
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães
483
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).
ASM
CP
PASSO 1
PF
PLM
PASSO 2
CP
TIM
TPI
TS
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães
484
9.6 Exemplo
START:
VOLTA:
DADO:
ORG
MOVE
DCR
JNZ
MVI
HLT
DW
END
0100H
DADO,R0
R0
VOLTA
#11H,R1
20H
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
485
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 - 2009 - Prof. Léo Pini Magalhães
486
Exemplo – cont.
TPI - TABELA DE PSEUDOINSTRUÇÕES
Mnemônico
Rotina de
Tratamento
ORG
RORG
END
REND
DS
RDS
DW
RDW
:
:
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães
487
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:
0101
0102
0103 VOLTA:
0104
0105
0106
0107
0108
0109
010A DADO:
MOVE DADO,R0
DCR
JNZ
R0
VOLTA
MVI
#11H,R1
HLT
DW
20H
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:
0101
0102
0103 VOLTA:
0104
0105
0106
0107
0108
0109
010A DADO:
MOVE DADO,R0
DCR
JNZ
R0
VOLTA
MVI
#11H,R1
Tabela de Símbolos
HLT
DW
20H
Símbolo
Valor
START
0100
VOLTA
0103
DADO
010A
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães
489
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
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
010A
PLM (em hexadecimal)
11
01
0A
30
60
01
03
21
11
00
20
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães
490
9.7 Exercícios
1.
Resolva os exercícios (1) a (6) do livro texto.
DCA-FEEC-UNICAMP: Introdução à Computação Digital - 2009 - Prof. Léo Pini Magalhães
491
Download