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.

Slides:



Advertisements
Apresentações semelhantes
Software Básico Silvio Fernandes
Advertisements

Software Básico Silvio Fernandes
Software Básico Silvio Fernandes Universidade Federal Rural do Semiárido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula 05:
Capitulo 6: Entrada e Saída
gerador de código intermediário
1.3.2 – Linguagem Assembly Um programa em linguagem de máquina sofre de total falta de clareza O programa é uma sequência de linhas numeradas Cada linha.
Arquitetura de Computadores
WebDesign Redes de Computadores Aula 05
Introdução à Ciência da Computação Linguagens de Programação.
Estruturas de Repetição
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INTRODUÇÃO AOS APLICATIVOS JAVA Prof. Thiago Pereira Rique
INTRODUÇÃO AOS APLICATIVOS JAVA
Programação Aplicada Luiz Silveira Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Aula 02: Conceitos e tipos de linguagens.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 03: Computador.
Software Básico Silvio Fernandes
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes
Algoritmos e Programação Linguagens de Programação Teoria Aula 5 (05/05) Universidade Federal do Vale do São.
Introdução a Programação Renata Freire
Gerenciamento de Arquivos, Páginas e Registros
Introdução à Informática
Programação para Engenharia I
LPG - I: Ponteiros e Vetores/Matrizes UDESC - SBS
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Análise Léxica Supondo o trecho de programa abaixo:
Construção de Compiladores
Arquitetura de Computadores
Linguagens de Programação
Linguagem C Strings.
Autor: Fernando de Mesentier Silva
Ponteiros.
Variável Variável: “objecto” que pode assumir diversos valores;
1 4.6 – Variáveis - introdução Nesta altura (ao nível da programação) interessa saber que um computador tem: Nesta altura (ao nível da programação) interessa.
Revisão da Linguagem C.
Sistemas Operacionais
Introdução à Programação
JAVA: Conceitos Iniciais
Arquitectura de Computadores II
PROGRAMAÇÃO I UNIDADE 1.
Funcionamento básico de um computador
UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA CIVIL INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves.
Estrutura de dados, pseudocódigo
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 02: Introdução.
Arquitetura de computadores
Sistemas Operacionais
ORGANIZAÇÃO DE COMPUTADORES
Arquitetura de computadores
Organização e Arquitetura de Computadores
Agenda - Aula 2 Introdução (Computador Digital) Processadores
Agenda Modos de Endereçamento.
Vetor Prof. Guilherme Baião S. Silva Adaptações:
Análise Léxica.
Algoritmos e Estruturas de Dados I – Ponteiros
Campus de Caraguatatuba Licenciatura em Matemática Semestre de 2013
Geração de Código aula-12-geração-de-código.pdf.
Capítulo VIII Ambientes de Execução
3. Introdução à Linguagem C
Ceça Moraes – Introdução à Programação SI1
Capítulo 5 Entrada/Saída 5.1 Princípios do hardware de E/S
Algoritmos e Estrutura de Dados I Jean Carlo Mendes
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 2 Variáveis e Atribuições.
O que devem fazer os Microprocessadores ?
Tipos de Dados Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem.
Transcrição da apresentação:

Software Básico Silvio Fernandes 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

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

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

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

Assemblers 5

6

7

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

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

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

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

Um assemblers simples para o SIC 12

Um assemblers simples para o SIC 13

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

Um assemblers simples para o SIC 15

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

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

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

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

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

Algoritmo para a Passagem 1 21

Algoritmo para a Passagem 2 22

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