• Nenhum resultado encontrado

9. Software de Sistema - Montadores (capítulo 9 do livro texto)

N/A
N/A
Protected

Academic year: 2021

Share "9. Software de Sistema - Montadores (capítulo 9 do livro texto)"

Copied!
33
0
0

Texto

(1)

9. Software de Sistema - Montadores

(capítulo 9 do livro texto)

Carregadores Montador

Compiladores

Sistema Operacional

(Gerenciador de Processador, Memória, E/S, etc)

Microprogramas Circuitos Físicos Ligadores Processador de Macro Depuradores Programas Utilitários Programas de Aplicação Usuário Software Aplicativo Software de Sistema Hardware

(2)

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.

(3)

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

(4)

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

(5)

Montadores (Assemblers) – cont.

MONTADOR tabelas Programa em linguagem de montagem ( Assembly ) Programa em linguagem de máquina

(6)

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;

(7)

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

(8)

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 RS TSTBIT 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 interface RD: EQU 10002 ; porta de dados (saída)

(9)

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

: : : : : : : :

(10)

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 ; reserva 20 posições :

MOVE #3,AREA+5 ; acesso à área especificada

EQU - define rótulo

(11)

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

: : : :

(12)

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 pelos equivalentes binários;

b. determinar posições de memória, relativas ao programa, para os endereços simbólicos (rótulos);

c. 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.

(13)

Tarefas de um Montador-cont.

exemplo de tradução por um montador (palavra de 16 bits) – Motorola 68000

END n : : : : 0000000000000100 28 0011000111000001 26 MOVE D1, C 5 0000000000000010 24 1101001000111000 22 LOOP: ADD B, D1 4 0000000000000000 20 0011001000111000 18 MOVE A,D1 3 0000000000000000 16 : : : : 0000000000000000 4 C: DS 7 2 0000000000010100 2 B: DW 20 1 0000000000001010 0 A: DW 10 0 Código Objeto End. Relativo Instrução N° comando

(14)

Tarefas de um Montador-cont.

exemplo de tradução por um montador (palavra de 16 bits) – Motorola 68000

END n : : : : 0000000000000100 28 0011000111000001 26 MOVE D1, C 5 0000000000000010 24 1101001000111000 22 LOOP: ADD B, D1 4 0000000000000000 20 0011001000111000 18 MOVE A,D1 3 0000000000000000 16 : : : : 0000000000000000 4 C: DS 7 2 00000000.00010100 2 B: DW 20 1 00000000.00001010 0 A: DW 10 0 Código Objeto End. Relativo Instrução N° comando byte 0 , 1 2, 3 7 x 2 bytes end.A end.C end.B modo Abs. - Reg.

(15)

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

001

word=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

modo

000

(16)

9.4 Estruturas de dados no processo de

montagem

Montador

(ASM)

P L M

T P I

T I M

P F

T S

Programa Fonte Programa em Linguagem de Máquina

Tabela de Símbolos

Tabela de Instruções de Máquina

(17)

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.

(18)

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

: : : : RRTS 2 0100 1110 0111 0101 RTS RMOV 2 a 6 00xx ???????? ?????? MOVE : : : : Rotina de Tratamento de operandos Comprimento (bytes) Código de Operação Mnemônico

(19)

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).

(20)

Estruturas de dados no processo de

montagem – cont.

Tabela de Pseudo-Instruções – TPI – cont.

Exemplo de tabela TPI – Tabela de Pseudoinstruções

: : : : 4 DC.L : 2 DC.W : 1 DC.B RDW 2 DW RORG -ORG : : : Rotina de Tratamento Comprimento (bytes) Mnemônico

(21)

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)

0022 LOOP 0004 C 0002 B 0000 A Valor (em decimal) Símbolo

(22)

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

(23)

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;

(24)

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 ← comprimento dos dados L ← comprimento da instrução guardar rótulo = CP na TS encontrou encontrou ORG EQU END DW DS não encontrou

Passo 1 – processar símbolos

(25)

O processo de montagem – cont.

Passo 2 – gerar códigos

CP ← 0 lê CP ← valor CP ← CP + L FIM busca TPI

busca TIM calcula / insereconstante L ← comprimento dos dados L ← comprimento da instrução processa C.O. processa operandos insere no PLM encontrou encontrou

ORG EQU END DS

DW

nã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.

(26)

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).

PLM ASM PASSO 2 PASSO 1 TIM TPI CP CP TS PF

(27)

9.6 Exemplo

ORG 0100H START: MOVE DADO,R0 VOLTA: DCR R0 JNZ VOLTA MVI #11H,R1 HLT DADO: DW 20H END

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.

(28)

Exemplo – cont.

TIM - TABELA DE INSTRUÇÕES DE MÁQUINA

: : : : RDCR 1 30 DCR R0 RJMP 3 60 JNZ RHLT 1 00 HLT RMVI 2 21 MVI R1 RMOV 3 11 MOVE R0 Rotina de Tratamento de operandos Comprimento (bytes) Código de Operação (hexadecimal) Mnemônico (*)

(29)

Exemplo – cont.

: : RDW DW RDS DS REND END RORG ORG Rotina de Tratamento Mnemônico

(30)

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,R0 0101 0102 0103 VOLTA: DCR R0 0104 JNZ VOLTA 0105 0106 0107 MVI #11H,R1 0108 0109 HLT 010A DADO: DW 20H

(31)

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,R0 0101 0102 0103 VOLTA: DCR R0 0104 JNZ VOLTA 0105 0106 0107 MVI #11H,R1 0108 0109 HLT 010A DADO: DW 20H 010A DADO 0103 VOLTA 0100 START Valor Símbolo Tabela de Símbolos

(32)

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 11 0101 01 0102 0A 0103 30 0104 60 0105 01 0106 03 0107 21 0108 11 0109 00 010A 20

(33)

9.7 Exercícios

Referências

Documentos relacionados

O segundo Beneficiário será designado pelo Segurado na Proposta de Adesão, podendo ser substituído a qualquer tempo, mediante solicitação formal assinada pelo próprio Segurado, para

O presente trabalho pretende contribuir para reduzir estas dificuldades, oferecendo expressões com o mesmo formato para a dependência em relação à temperatura de algumas

ed è una delle cause della permanente ostilità contro il potere da parte dell’opinione pubblica. 2) Oggi non basta più il semplice decentramento amministrativo.

Our contributions are: a set of guidelines that provide meaning to the different modelling elements of SysML used during the design of systems; the individual formal semantics for

A Fundação Centro Oeste importou uma colheitadeira John Deere do tipo cotton stripper 7455, equipada com plataforma de colheita da marca Boll Buster de 4,5m de largura, própria

esta espécie foi encontrada em borda de mata ciliar, savana graminosa, savana parque e área de transição mata ciliar e savana.. Observações: Esta espécie ocorre

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

Desta forma, a ASC atua como metodologia crucial no desenvolvimento social, cultural e educativo das utentes portadoras de deficiência, inserido num contexto lúdico e