Escolar Documentos
Profissional Documentos
Cultura Documentos
Software de Sistema
Usurio Programas Programas de Aplicao Utilitrios Processador Editores Depuradores de Macro de Texto Compiladores Montador Carregadores Software Aplicativo
Software de Sistema
440
441
442
1. Montadores (Assemblers)
Montador um programa cujos dados de entrada so sequncias de caracteres que constituem o programa em Linguagem Simblica, de Montagem ou "Assembly", e cujo resultado um conjunto de palavras de mquina (sequncias de bits) que constituem o programa em linguagem de mquina. O programa gerado em linguagem de mquina pode ser carregado na memria e executado ("load and go"), ou ser a entrada de outro programa, o Carregador, que aps algum processamento para adequar os endereos ao bloco de memria disponvel, carrega-o na memria para ser executado.
443
tabelas
444
RTULO - composto de variveis alfanumricas, iniciando com letras, identifica endereos onde so armazenados instrues e dados; CDIGO DE OPERAO - conjunto de letras que formam mnemnicos para as instrues; OPERANDOS - identificam variveis, pelos rtulos, ou registradores da UCP; MODIFICADORES - identificam modos de endereamento; COMENTRIOS - descrevem o programa.
445
DELIMITADORES Os campos da instruo em linguagem simblica so separados por delimitadores. Estes delimitadores so definidos pelo projetista do MONTADOR. Exemplos de delimitadores: espao - entre campos : - separa o rtulo ; - separa o comentrio , - separa operandos
446
STORE R
; store R ou R
Exemplo de programa de Sada de dado (isolada) LOOP: IN TSTBIT JNZ LDA OUT : : : : EQU EQU RS 2 LOOP dado RD 10000 10002 ; leitura do registrador RS ; bit 2 de RS=1 ? ; loop de espera ou sada de dado ? ; Acc (dado) ; porta RD (Acc) ; porta de status da interface ; porta de dados (sada)
447
RS: RD:
Exemplo de programao de Interface (E/S mapeada) PROG: MOVE #10, RC ; RC 10 :::: : : : : RC: EQU 1000A ; porta de controle da interface
448
DC / DW / DB - atribui um valor (dado) a uma posio da memria; CINCO: DW 5 ; a posio de memria referenciada por CINCO recebe o valor 5
DS - define rea alocada em quantidade de palavras/bytes AREA: DS 20 ; reserva 20 posies : MOVE #3,AREA+5 ; acesso rea especificada
EQU - define rtulo ABC: EQU 1028 ; o rtulo ABC equivale posio de memria 1028
449
ADR - define que a posio contm o endereo do rtulo especificado X1: DW 12 : AX1: ADR X1
END - define fim de programa Exemplo: ...... X1: AX1: ORG DW :::: ADR 5000 12 X1 ; contedo de AX1 o end. X1 (5000)
450
3. Tarefas de um Montador
Para traduzir o programa em linguagem simblica para um programa em linguagem de mquina, o Montador deve : a. b. c. substituir os mnemnicos da instruo e modificadores de endereo pelos equivalentes binrios; determinar as posies de memria (endereos binrios) correspondentes aos endereos simblicos (rtulos) utilizados no programa; substituir todas as referncias a um dado endereo simblico pelo endereo binrio correspondente.
Para determinar as posies de memria para os endereos simblicos (b), o montador utiliza a informao dada pelo programador nas pseudoinstrues; estas no so traduzidas para Linguagem de Mquina, servindo somente para orientar o montador na gerao do cdigo objeto.
451
453:
452
3. Tarefas de um Montador-cont.
Exemplo de traduo por um montador (palavra de 16 bits) Motorola 68000 N comando 0 1 2 Instruo A: DC.W 10 B: DC.W 20 C: DS 7 End. Relativo 0 2 4 : : 16 18 20 22 24 26 28 : Cdigo Objeto 0000000000001010 0000000000010100 0000000000000000 : : 0000000000000000 0011001000111000 0000000000000000 1101001000111000 0000000000000010 0011000111000001 0000000000000100 :
3 4 5 : n LOOP:
453
3. Tarefas de um Montador-cont.
exemplo de traduo por um montador (palavra de 16 bits) Motorola 68000 N comando 0 1 2 Instruo A: DC.W 10 B: DC.W 20 C: DS 7 modo Abs. - Reg. 3 4 5 : n LOOP: MOVE A,D1 ADD B, D1 MOVE D1, C : END End. Relativo 0 2 4 : : 16 18 20 22 24 26 28 : Cdigo Objeto 00000000.00001010 00000000.00010100 0000000000000000 : : 0000000000000000 0011001000111000 0000000000000000 1101001000111000 0000000000000010 0011000111000001 0000000000000100 : byte 0,1 2, 3
454
PF
Programa Fonte
Montador (ASM)
PLM
Programa em Linguagem de Mquina
TIM
Tabela de Instrues de Mquina
TPI
Tabela de Pseudo-Instrues
455
O nmero de campos que compe a tabela TIM depende de caractersticas especficas do processador e da sintaxe da linguagem simblica. Dois campos esto sempre presentes na tabela TIM : MNEMNICO - onde esto os mnemnicos das instrues definidos pela sintaxe da linguagem simblica. CDIGO DE OPERAO - onde esto os cdigos de operao das instrues de mquina. Outros campos podem completar a informao : COMPRIMENTO DA INSTRUO (em bytes) - contm o comprimento da instruo. ROTINA DE TRATAMENTO DE OPERANDOS - onde esto relacionadas as rotinas que o montador deve ativar para gerar o endereo dos operandos quando estes so expresses ou dependem dos modos de endereamento.
UNICAMP-FEEC: ea869-2013 - Profs. Lo Pini Magalhes & Maurcio Ferreira Magalhes 456
Mnemnico
Cdigo de Operao
Comprimento (bytes) : 2 a 10 2 :
: MOVE RTS :
Dois campos esto sempre presentes na tabela TPI : MNEMNICO - onde esto os mnemnicos das pseudoinstrues, definidos pela sintaxe da linguagem simblica. ROTINA DE TRATAMENTO DE OPERANDOS - onde esto relacionadas as rotinas que o montador deve ativar para processar a pseudoinstruo. outros campos podem completar a informao, como : COMPRIMENTO DA PSEUDOINSTRUO - contm o nmero de bytes ou palavras que deve ser reservado para pseudoinstrues como em DB (Define Byte) ou DW (Define Word).
UNICAMP-FEEC: ea869-2013 - Profs. Lo Pini Magalhes & Maurcio Ferreira Magalhes 458
459
10
001000 001002
0A 00 12 41 72 6C 38 31 38 00 00 00 00
42 0A 34 70 69 20 20 39 35 00 01 00 02
DC.B 10,66
First Date
001004 001006 001008 00100A 00100C 00100E 001010 001012 001014 001016 001018 00101A
DC.L $0A1234
DC.L 1,2
460
461
11
5. O processo de montagem
Para realizar a traduo, os Montadores so 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; porm, este fato implica em restries no programa fonte (ver Exerccios 3, 5 e 6 do livro texto). Para o Montador de dois Passos: no primeiro passo o Montador l o cdigo fonte e determina os endereos para as referncias simblicas, construindo a Tabela de Smbolos. no segundo passo o cdigo fonte lido novamente e os mnemnicos das instrues e referncias simblicas so substitudos por cdigos de mquina.
462
PASSO 2 - Gerar o programa em linguagem de mquina substituir smbolos por valores indicados na Tabela de Smbolos; gerar instrues de mquina; gerar dados (constantes definidas).
463
12
L0
CP valor
processa rtulo CP CP + L
464
ORG
EQU
END FIM
CP valor
A cada instruo lida feita a busca nas tabelas TPI e TIM. No Passo 2 no necessrio prover um tratamento de erro quando a instruo no pertencer s tabelas TIM e TPI; o tratamento de erro ativado no Passo 1 e o Passo 2 no executado.
465
13
LM PASSO 2 CP
6. Exemplo
START: VOLTA: ORG MOVE DCR JNZ MVI HLT DC.W END 0100H DADO,R0 R0 VOLTA #11,R1 $20
DADO:
Para ilustrar as diferenas entre processadores, neste exemplo temos palavra de 8 bits (1 byte) bem como outros cdigos de operao e comprimentos de instruo.
467
14
6. Exemplo cont.
TIM - TABELA DE INSTRUES DE MQUINA
Mnemnico (*) MOVE R0 MVI R1 HLT JNZ DCR R0 : Cdigo de Operao (hexadecimal) 11 21 00 60 30 : Comprimento (bytes) 3 2 1 3 1 : Rotina de Tratamento de operandos RMOV RMVI RHLT RJMP RDCR :
468
6. Exemplo cont.
TPI - TABELA DE PSEUDOINSTRUES
469
15
6. Exemplo cont.
No Passo 1 gerada a tabela TS a partir do processamento do comprimento das instrues conforme mostrado a seguir.
Endereo (CP) 0100 START: 0101 0102 0103 VOLTA: 0104 0105 0106 0107 0108 0109 010A DADO:
MOVE DADO,R0
DCR JNZ
R0 VOLTA
#11,R1
$20
470
6. Exemplo cont.
No Passo 1 gerada a tabela TS a partir do processamento do comprimento das instrues conforme mostrado a seguir.
Endereo (CP) 0100 START: 0101 0102 0103 VOLTA: 0104 0105 0106 0107 0108 0109 010A DADO: MOVE DADO,R0
DCR JNZ
R0 VOLTA
#$11,R1 Tabela de Smbolos $20 Smbolo START VOLTA DADO Valor 0100 0103 010A
471
16
6. Exemplo cont.
Seguindo o algoritmo descrito no Passo 2 e utilizando a tabela gerada no Passo 1, obtemos o seguinte cdigo objeto (devemos observar que os endereos dos operandos esto armazenados em 2 bytes, por exemplo nos endereos 101-102 e 105-106) :
Endereo 0100 0101 0102 0103 0104 0105 0106 0107 0108 0109 010A 010B
Problemas
1.
473
17
Comentrios Finais
O captulo inicial do texto apresentou ao leitor Computao como uma disciplina na qual o programador, antes de iniciar a resoluo de seu problema, seja este simples ou elaborado, deve perguntar-se sobre a natureza do problema em questo, abordando as noes de procedimento, terminao e complexidade, que levam ao estudo de algoritmos e de sua tratabilidade. Os textos citados como referncia na Seo I.2 permitem um aprofundamento neste importante tema, muitas vezes desconsiderado pelos programadores menos experientes.
474
Os prximos captulos at o captulo oito, ofereceram ao leitor uma viso introdutria porm completa dos aspectos bsicos envolvidos no tema organizao de computadores. A abordagem ateve-se aos processadores CISC (Complex Instruction Set Computer), que so mquinas de arquitetura "von Neumann" que procuram maximizar o nmero de funes oferecidas ao programador (da o termo complex).
475
18
476
O ltimo captulo introduziu a questo do software que envolve (se sobrepe ao) o hardware/firmware de um computador. O prximo passo nesta direo ser o estudo da primeira camada de software bsico, envolvendo os tpicos de carregadores, compiladores (e por conseguinte linguagens) e funes bsicas de um sistema operacional (escalonamento, gerncia de memria e gerncia de processos). Alm destes tpicos o leitor deve estar atento para a rea de Redes de Computadores e todos seus aspectos correlatos, j que a computao hoje em dia tem em rede seu paradigma mais importante.
477
19