software básico silvio fernandes 2009.1 universidade federal rural do semi-Árido departamento de...

23
Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções Básicas dos Assemblers 1

Upload: internet

Post on 16-Apr-2015

110 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

Software Básico

Silvio Fernandes2009.1

Universidade Federal Rural do Semi-ÁridoDepartamento de Ciências Ambientais

Ciência da Computação

Aula 06: Funções Básicas dos Assemblers

1

Page 2: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

Assemblers• Existem algumas funções essenciais que todos os

assemblers devem executar, como a tradução dos mnemônicos de código de operações nos seus equivalentes em linguagem de máquina, e a designação de endereços de máquina aos labels simbólicos utilizados pelo programador

• Se avançarmos em um nível mais baixo, as características e o projeto de um assembler passarão a depender fortemente da linguagem-fonte que ele traduz e da linguagem de máquina que ele produz

2

Page 3: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

Assemblers

• Utilizaremos um programa exemplo para estudar essas características

• O número das linhas servem apenas como referência

• O endereçamento indexado é indicado pela inclusão do modificador “X”

• Linhas com “.” são linhas de comentário

3

Page 4: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

Assemblers

• Utilizaremos as seguintes diretivas do assembler:– START: especifica o nome e o endereço inicial do

programa– END: indica o fim do programa-fonte e (opcionalmente)

especifica a primeira instrução executável do programa– BYTE: gera uma constante alfanumérica ou hexadecimal,

ocupando tantos bytes necessários– WORD: gera uma cte. Inteira de uma palavra– RESB: reserva o no. indicado de bytes para uma área de

dados– RESW: reserva o no. indicado de palavras para uma área

de dados

4

Page 5: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

Assemblers

5

Page 6: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

Assemblers

6

Page 7: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

Assemblers

7

Page 8: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

Assemblers• A rotina principal lê registros de um dispositivo

de entrada (cód. F1) e os copia para um dispositivo de saída (cód. 05). Chama uma sub-rotina RDREC para ler um arquivo e armazená-lo num buffer, e a sub-rotina WRREC que transfere o registro do buffer para o dispositivo de saída

• O fim de cada registro é indicado por um caracter nulo (hexadecimal 00)

• O fim do arquivo será indicado por um registro de comprimento 0, que será informado pelo programa através do cód. de fim de arquivo (EOF)

8

Page 9: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

Um assemblers simples para o SIC

• A figura a seguir mostra o programa anterior acompanhado do código-objeto de cada instrução

• A coluna Pos. fornece o endereço (em hexa) de cada parte do programa montado

• A tradução do programa-fonte em código-objeto nos obriga a executar as seguintes funções (mas não necessariamente nesta ordem):

9

Page 10: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

Um assemblers simples para o SIC

1. Converter os mnemônicos nos equivalentes em ling. de máquina. Ex: STL para 14 (l. 10)

2. Converter operandos simbólicos em end. Máquina. Ex: RETADR para 1033 (l. 10)

3. Montar as inst. de máq. no formato correto4. Converter constante nas representações

internas. EX: EOF para 45F46 (l. 80)5. Escrever o programa-objeto e sua listagem

10

Page 11: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

Um assemblers simples para o SIC• Todas as funções, exceto a 2, podem ser

executadas com facilidade• Por isso a maioria dos assemblers faz 2

passagens pelo programa-fonte• O assembler também tem que processar as

diretivas do assembler que não são instruções de máquina, elas atuam sobre o próprio assembler

• Por fim, o assembler tem que gravar o código-objeto em algum dispositivo de saída para ser carregado na memória antes de ser executado

11

Page 12: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

Um assemblers simples para o SIC

12

Page 13: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

Um assemblers simples para o SIC

13

Page 14: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

Um assemblers simples para o SIC

• O formato simples do programa-objeto tem 3 registros: Header (cabeçalho), Texto e End (Fim)

– Header: contém o nome do programa, o endereço inicial e o tamanho

– Texto: contém as instruções traduzidas e os dados do programa, com os endereços onde devem ser carregados

– Fim: assinala o final do programa-objeto e especifica o endereço do programa onde a execução deve ser iniciada

14

Page 15: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

Um assemblers simples para o SIC

15

Page 16: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

Um assemblers simples para o SIC

• Na figura o símbolo ^ é usado para separar os campos visualmente mas não aparecem no programa-objeto

• Funções do nosso assembler– Passagem 1 (define os símbolos)

1. Associa endereços a todas as instruções2. Guarda os valores (endereços) associados aos labels3. Executa parte do processamento das diretivas do

assembler

16

Page 17: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

Um assemblers simples para o SIC

• Funções do nosso assembler– Passagem 2 (monta as instruções e gera o

programa-fonte)1. Monta as instruções (traduzindo os cód. de operação

e procurando os endereços)2. Gera os valore de dados definidos por BYTE, WORD...3. Processa as diretiva não tratadas na 1ª passagem4. Escreve o programa-objeto e a listagem definitiva do

programa

17

Page 18: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

As tabelas e a lógica do assembler

• Nosso assembler simples usa 2 tabelas– OPTAB (Tabela de Código de Operação)

• Localiza os mnemônicos dos códigos de operação e os traduz em código equivalente na ling. máquina

– SYMTAB (Tabela de Símbolos)• Armazena os valores (endereços) atribuídos aos labels

• Variável LOCCTR (Contador de Posições)– Inicializada com o endereço inicial (START), auxilia na

designação de endereços– O tamanho da instrução processada é somado a

LOCCTR

18

Page 19: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

As tabelas e a lógica do assembler

• OPTAB costuma ser organizada como uma hash table tendo o mnemônico como chave

• Normalmente OPTAB é uma tabela estática• A SYMTAB contém o nome e o endereço de

cada label, juntamente com flags que indicam condições de erro. Também pode conter informações sobre tipo, tamanho das áreas de dados ou das instruções associadas aos labels

19

Page 20: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

As tabelas e a lógica do assembler• SYMTAB também é organizada em uma hash

para tornar mais eficiente a inclusão e recuperação de dados

• É importante que a função hashing escolhida funcione bem com chaves não aleatórias (LOOP1, LOOP2, LOOPA...)

• Geralmente a 1ª passagem cria um arquivo intermediário contendo todas as instruções originais juntamente com os endereços associados a cada uma, os indicadores de erro, etc, que serve de entrada para a 2ª passagem

20

Page 21: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

Algoritmo para a Passagem 1

21

Page 22: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

Algoritmo para a Passagem 2

22

Page 23: Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções

Referências

• Leland L Beck.. “Desenvolvimento de software básico”. 2ª ed. Rio de Janeiro: Campus, 1993. 525p.

23