A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

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 Básicas dos Assemblers 1

2 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

3 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

4 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

5 Assemblers 5

6 6

7 7

8 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

9 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

10 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 correto 4.Converter constante nas representações internas. EX: EOF para 45F46 (l. 80) 5.Escrever o programa-objeto e sua listagem 10

11 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

12 Um assemblers simples para o SIC 12

13 Um assemblers simples para o SIC 13

14 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

15 Um assemblers simples para o SIC 15

16 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ções 2.Guarda os valores (endereços) associados aos labels 3.Executa parte do processamento das diretivas do assembler 16

17 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ª passagem 4.Escreve o programa-objeto e a listagem definitiva do programa 17

18 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

19 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

20 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

21 Algoritmo para a Passagem 1 21

22 Algoritmo para a Passagem 2 22

23 Referências Leland L Beck.. Desenvolvimento de software básico. 2ª ed. Rio de Janeiro: Campus, 1993. 525p. 23


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google