Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de...
Transcript of Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de...
![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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/1.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/2.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/3.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/4.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/5.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/6.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/7.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/8.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/9.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/10.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/11.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/12.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/13.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/14.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/15.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/16.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/17.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/18.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/19.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/20.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/21.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/22.jpg)
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.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc0f9497959413d8b7a3b/html5/thumbnails/23.jpg)
Referências
• Leland L Beck.. “Desenvolvimento de software básico”. 2ª ed. Rio de Janeiro: Campus, 1993. 525p.
23