EA869 Montadores Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato.

Slides:



Advertisements
Apresentações semelhantes
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.
Advertisements

Arquitetura de Computadores
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.
Arquitetura e organização de computadores
Arquitetura e organização de computadores.
Arquitetura de Computadores
SISTEMAS OPERACIONAIS I Memória Virtual e Paginação
Geração de Código aula-12-geração-de-código.pdf.
Execução de programas Cap. VIII.
Introdução a Banco de Dados Aula 04
My drivers Podemos definir um driver como uma ponte de comunicação entre determinado dispositivo e a central de processamento de um computador. Na prática,
Prof. Gilson Simões Gonçalves Sistemas Operacionais Prof. Gilson Simões Gonçalves Aula II.
Aula 6.  Conceitos de redes ◦ Protocolo TCPI/IP ◦ Endereçamento ◦ DNS ◦ Gateway ◦ Atribuição dinâmica e estática (DHCP)  Exercícios : Verificar configurações.
Técnicas de Representação de Conhecimento Regras de Produção.
Capa. Algoritmos Um algoritmo pode ser expresso de diversas maneiras, dentre elas: Linguagem Natural Fluxograma Pseudocódigo Linguagem de Programação.
EA869 Interrupção Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato 1.
Tecnologias e Linguagens para Banco de Dados I - WEB Prof. João Ricardo Andrêo 29/5/ :40 1 Atividades: 1 - Criar uma base de dados para uma empresa.
Modos de Transferência Acesso Direto à Memória (DMA) ARQUITETURA DE COMPUTADORES II Prof. César Augusto M. Marcon.
Sistema Informatizado Software. Formado por algoritmos e suas representações para o computador (programas) Instruções codificadas necessárias para transformar.
José Antônio da cunha IFRN Administração de Banco de Dados.
Introdução POO Thiago Medeiros Sistemas de Informação Definição: Sistemas de Informação é uma combinação de pessoas, dados, processos, redes de.
Aula 01 Conhecendo o Computador Prof. Filipe Mutz.
SECRETARIA DE ESTADO DA EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DIRETORIA DE DESENVOLVIMENTO HUMANO GERÊNCIA DE TECNOLOGIA DE INFORMAÇÕES EDUCACIONAIS E ADMINISTRATIVAS.
1 Circuitos Sequenciais: Registradores Disciplina: Circuitos Digitais Aula 20 Lucas Santos Pereira.
Tecnologias para Wireles LAN (IEEE ) Aula Computação Úbiqua Prof. Me. Diovani MIlhorim.
Cálculo Numérico Computacional Prof. Linder Cândido da Silva.
Sistemas Operacionais 2 Introdução Aula O que é um sistema operacional 1.2 História dos sistemas operacionais 1.3 O zoológico de sistemas operacionais.
Somadores e Multiplicadores
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais Prof.: Gustavo Wagner
Universidade Federal do Espírito Santo - UFES Laboratório de Computação de Alto Desempenho - LCAD Banco de Registradores e ALU Prof. Alberto F. De Souza.
EA869 Subrotinas Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato 1.
EA869 Modos de Endereçamento Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato 1.
Universidade Federal do Espírito Santo - UFES Laboratório de Computação de Alto Desempenho - LCAD Introdução ao Logisim Prof. Alberto F. De Souza LCAD/DI/UFES.
Glossário Autor: Skyup Informática. Atividade - Glossário A atividade glossário permite que o administrador crie páginas de definições, um dicionário.
EA869 Algoritmos: estruturas de dados e linguagens de programação Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas.
Redes de Computadores e Aplicações – Camada de Rede IGOR ALVES.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais IESP - FATEC-PB Prof: Gustavo Wagner
Tecnologias e Linguagens para Banco de Dados I Prof. João Ricardo Andrêo 1/6/ :17 1 Atividades: 1 – Descreva os tipos de dados existentes no Microsoft.
Tecnologias e Linguagens para Banco de Dados I Prof. João Ricardo Andrêo 1/6/ :19 1 Respostas: 1. O que é um Sistema Gerenciador de Banco de Dados.
IFRN Técnico em Informática para Internet Desenvolvimento de Algoritmos Prof. Gilbert Azevedo.
Mecânica Teórica Introdução e conceitos básicos da Mecânica Teórica:  Campos de Física Teórica;  Objecto de estudo;  Métodos da mecânica teórica; 
II ENCONTRO CETELI/UFAM-SAMSUNG DE INOVAÇÃO TECNOLÓGICA.
TRABALHO AVALIATIVO ALUNO: FRANCISCO HELIÉSUS DE MEDEIROS MATÉRIA: ORGANIZAÇÃO DE COMPUTADORES.
Lógica de Programação Curso Técnico em Informática – Escola Olímpio Professor Marcelo Josué Telles
INE5408 Estruturas de Dados Introdução a Árvores - Conceitos - Árvores Binárias - Métodos e algoritmos de percurso - Métodos e algoritmos de balanceamento.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais FATEC-PB Professor: Gustavo Wagner
Programação para Internet Aula 06 Linguagem Java (Orientação a Objetos – Atributos e Métodos)
Faculdade de Tecnologia SENAC Pelotas/RS Curso Superior de Tecnologia em Redes de Computadores Projeto Integrador I Seminário Final Funcionalidades da.
Prof. Gustavo Fernandes de Lima Simbologia e Diagramas de Circuitos Eletrônicos.
Capítulo 1 Introdução aos Sistemas Operacionais Curso Técnico de Redes de Computadores Professor Emerson Felipe Administração de Sistemas Operacionais.
Modos de endereçamento Considere uma linguagem Assembly fictícia na qual o primeiro operando será sempre o registrador destino. Vamos analisar o endereçamento.
SISTEMAS OPERACIONAIS MEMÓRIA VIRTUAL. INTRODUÇÃO Memória Virtual é um técnica sofisticada e poderosa de gerenciamento de memória, onde a MP e a MS são.
Alessandro D. R. Fazenda
DIRETORIA ENSINO – REGIÃO DE DIADEMA Centro de Informações Educacionais e Gestão da Rede Escolar Núcleo de Gestão da Rede Escolar e Matrícula Abril/2012.
Jean Carlo Mendes
“Armazenar dados e programas que serão utilizados pelo processador (CPU – Unidade Central de Processamento) ”
Normalização (4FN) Na literatura aparecem outras formas normais, como a forma normal de Boyce/Codd, a 4FN e a 5FN. Destas a única que tem importância na.
Genius X nos Exercícios de Memória. O cérebro é um órgão, na realidade, o maior do corpo humano. Além destas características ele é sozinho, o responsável.
 Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer  Localidade Temporal  Um item referenciado.
INE5408 Estruturas de Dados Estruturas de Dados básicas utilizando Vetores - Listas.
Lógica de programação Estruturas de seleção Estruturas de repetição Sub-Rotinas 1.
Revisão de Conceitos Thiago Medeiros Barros. Algoritmos Qualquer problema de computação pode ser resolvido executando uma série de ações em uma ordem.
Oficina de Informática
Disciplina: Análise e Projeto de Sistemas I Aula 04: Engenharia de Software Profa. MSc. Daniela Gibertoni.
SISTEMA OPERACIONAL Administra todos os recursos do computador fazendo a interação entre software e hardware. Sua função é gerenciar e disponibilizar.
Curso: Engenharia de Produção Disciplina: Sistemas Térmicos Prof. Luis Roberto de Mello e Pinto.
Prof. Gustavo Fernandes de Lima Descrevendo Circuitos Lógicos Capítulo 3 Parte II.
SOFTWARE Software Aplicativo – Executa Tarefas de Processamento de informações para usuários finais. Software de Sistemas – Gerencia e Apóia operações.
MUTAÇÃO DE INTERFACE (MI) JACKSON ANTONIO DO PRADO LIMA SILVIA REGINA VERGILIO.
Arquitetura de Computadores
Transcrição da apresentação:

EA869 Montadores Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato

Objetivos Introduzir o conceito de software de sistema. Conhecer as funções básicas de um sistema operacional. Conhecer a função e o modo de operação do montador (Assembler).

Recordando a disciplina... ProblemaAlgoritmo NÍVEL CONCEITUAL Estruturas de dados Linguagem Assembly Representação numérica Arquitetura de Computadores HIERARQUIA DE LINGUAGENS HARDWARE Quem gerencia os recursos do computador? SISTEMA OPERACIONAL SOFTWARE DE SISTEMA

MEMÓRIA COMPUTADOR UC BANCO DE REGISTRADORES UAL CPU Interf. Entrada/Saída DMA Sistema Operacional O que é? É um programa ou um conjunto de programas cuja função é gerenciar os recursos do sistema (definir qual programa recebe atenção do processador, gerenciar a memória, criar um sistema de arquivos, etc), fornecendo uma interface segura e simples entre o computador e o usuário.

O que é? É um programa ou um conjunto de programas cuja função é gerenciar os recursos do sistema (definir qual programa recebe atenção do processador, gerenciar a memória, criar um sistema de arquivos, etc), fornecendo uma interface segura e simples entre o computador e o usuário. Quais são suas funções? GERENCIAMENTO DE PROCESSOS  Garantir multiprocessamento (multicore).  Pipeline.  Definir tempo para cada processo e alterná-los quando necessário (threads). GERENCIAMENTO DE MEMÓRIA  Acesso completo à memória do sistema.  Permitir que os processos do usuário tenham acesso seguro à memória.  Criar e gerenciar memória virtual. INTERFACE COM O USUÁRIO  Os SOs fornecem uma abstração de hardware para que seus recursos possam ser usados de maneira correta e padronizada. Há uma interface para que o usuário possa desfrutar dos recursos do sistema. Sistema Operacional

Evolução Primeiro SO: Pessoas! Sistema Operacional

1980: MS-DOS Sistema Operacional Evolução

1985: WINDOWS 1.0 Evolução Sistema Operacional

1990: WINDOWS 3.0 Sistema Operacional Evolução

WINDOWS 95 Sistema Operacional Evolução

2007/2008: S.O. MOBILE Sistema Operacional Evolução

O Sistema Operacional faz parte de um conjunto de programas que define a maneira como os diversos elementos de hardware devem operar de modo a tornar o computador funcional. SOFTWARES DE SISTEMA HARDWARE SOFTWARE DE SISTEMA SOFTWARE DE APLICAÇÃO USUÁRIOS A estes programas denominamos... Sistema Operacional

Quatro outros programas completam a lista dos softwares de sistema: MONTADORES CARREGADORES COMPILADORES Foco deste tópico Próximo tópico Tema da disciplina EA879 Softwares de Sistema LIGADORES Próximo tópico

EndConteúdo Um dos processos mais importantes de um computador é a montagem, ou seja, a tradução de um programa em linguagem Assembly para a linguagem de máquina, e a preparação para seu carregamento na memória principal para ser executado. MOV R1, R2 SUB R2, #3 MUL R3, R1, R2 LDR R3, [R1]! STR R1, [R2,R3] AND R1, #3 ROT:MOV R2, #4 MONTADOR Montadores

Um dos processos mais importantes de um computador é a montagem, ou seja, a tradução de um programa em linguagem Assembly para a linguagem de máquina, e a preparação para seu carregamento na memória principal para ser executado. MONTADOR Tabela de instruções EndConteúdo MOV R1, R2 SUB R2, #3 MUL R3, R1, R2 LDR R3, [R1]! STR R1, [R2,R3] AND R1, #3 ROT:MOV R2, #4 AND R1, #3 1A 150B 1B 1F0A 1C AB3F 1D 237C 1E 1A1B 1F FFFA 20 EA86 OBSERVAÇÃO! Como os processadores trabalham com palavras de 16, 32 e até de 64 bits, não é conveniente representar os valores da memória em binário. A partir de agora, para mostrar a memória, iremos usar, tanto para o endereço quanto para o conteúdo, a representação hexadecimal. Montadores

O QUE É? É um programa cujos dados de entrada são sequências de caracteres que constituem o programa em linguagem 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, então, ser a entrada de outro programa, o carregador, que após algum processamento para adequar os endereços ao bloco de memória disponível, carrega-o na memória principal para ser executado. COMO É FEITA A TRADUÇÃO? O montador possui Tabelas com os mnemônicos de todas as instruções do computador e os símbolos (rótulos) manipuláveis. Além disso, pseudo-instruções auxiliam na tomada de decisão dos endereços de montagem. Montadores

EndConteúdo Vamos entender melhor o funcionamento do montador a partir de um exemplo. Seja o programa abaixo. Queremos montá-lo na memória do processador: 1. Onde o programa será montado? Para o montador saber o local (endereço de memória) que será montado um código, o programador precisa, ao escrever o programa, fornecer algumas informações através das pseudo-instruções. MOV R1, #5 SUB R2, A A: AND R1, #3 Montadores

Em resumo, pseudo-instruções são regras que ajudam o montador a definir o conteúdo de cada posição da memória ao instalar um programa. PSEUDO-INSTRUÇÕES É um tipo especial de instrução não executável, que insere valores em posições de memória, reserva espaço e organiza na memória o local de instalação das instruções. Quem lê e “executa” as pseudo- instruções é o montador ao alocar o programa Assembly na memória. DS X Reserva X palavras da memória a partir da posição da pseudo-instrução; DW V Posição de memória desta pseudo- instrução recebe o valor V; ORG Y A próxima instrução é alocada na posição Y de memória; ADR rótulo Posição recebe o endereço de “rótulo”; Rot: EQU Z Rótulo Rot está associado ao valor definido por Z. Vamos entender melhor o funcionamento do montador a partir de um exemplo. Seja o programa abaixo. Queremos montá-lo na memória do processador: EndConteúdo MOV R1, #5 SUB R2, A A: AND R1, #3 ORG 1F 2. Montando o programa na memória Montadores

Vamos entender melhor o funcionamento do montador a partir de um exemplo. Seja o programa abaixo. Queremos montá-lo na memória do processador: EndConteúdo Montador lê linha a linha todas as instruções e/ou pseudo-instruções do programa. Ao ler uma pseudo-instrução, ele busca na TABELA DE PSEUDO-INSTRUÇÕES (TPI) informações para executá-la. Ao ler uma instrução, ele a busca na TABELA DE INSTRUÇÕES DE MÁQUINA (TIM) o código de máquina correspondente e monta a instrução na memória. MOV R1, #5 SUB R2, A A: AND R1, #3 ORG 1F 2. Montando o programa na memória Montadores

Vamos entender melhor o funcionamento do montador a partir de um exemplo. Seja o programa abaixo. Queremos montá-lo na memória do processador: EndConteúdo MENÔNICOCOMP (BYTES) ROTINA DE TRAT. ORG-RORG DW1RDW DSiRDS ENDREND... TABELA DE PSEUDO-INSTRUÇÕES Relaciona a pseudo-instrução com a rotina que o montador deve chamar para processá-la. 1F MOV R1, #5 SUB R2, A A: AND R1, #3 ORG 1F 2. Montando o programa na memória Montadores

Vamos entender melhor o funcionamento do montador a partir de um exemplo. Seja o programa abaixo. Queremos montá-lo na memória do processador: EndConteúdo 2. Montando o programa na memória MNCC. M.COMP (BYTES) ROT. DE TRAT AND R12A2RANDR2 MOV R11E2RMOVR1 SUB R2F32RSUBR2... TABELA DE INSTRUÇÕES DE MÁQUINA Associa o mnemônico de uma instrução com o seu código de máquina. 1F 20 2A 03 MOV R1, #5 SUB R2, A A: AND R1, #3 ORG 1F Montadores

Vamos entender melhor o funcionamento do montador a partir de um exemplo. Seja o programa abaixo. Queremos montá-lo na memória do processador: EndConteúdo 2. Montando o programa na memória 1F 20 2A E 05 MOV R1, #5 SUB R2, A A: AND R1, #3 ORG 1F MNCC. M.COMP (BYTES) ROT. DE TRAT AND R12A2RANDR2 MOV R11E2RMOVR1 SUB R2F32RSUBR2... TABELA DE INSTRUÇÕES DE MÁQUINA Associa o mnemônico de uma instrução com o seu código de máquina. Montadores

Vamos entender melhor o funcionamento do montador a partir de um exemplo. Seja o programa abaixo. Queremos montá-lo na memória do processador: EndConteúdo 2. Montando o programa na memória 1F 20 2A E F3 1F MOV R1, #5 SUB R2, A A: AND R1, #3 ORG 1F MNCC. M.COMP (BYTES) ROT. DE TRAT AND R12A2RANDR2 MOV R11E2RMOVR1 SUB R2F32RSUBR2... TABELA DE INSTRUÇÕES DE MÁQUINA Associa o mnemônico de uma instrução com o seu código de máquina. Montadores

Um montador é um programa que lê um código em Assembly (Código Fonte), traduz para o código de máquina (Programa em Linguagem de Máquina) e o monta na memória. Algumas diretivas auxiliam o montador a decidir conteúdos de memória e em que local o código será instalado. Estas diretivas são conhecidas como PSEUDO-INSTRUÇÕES. Para traduzir e montar o código na memória, o montador segue alguns passos sequencialmente: Lê Linha do Código Assembly Instrução Busca o C.M., na tabela TIM Busca Instruções de execução na tabela TIP Pseudo- Instrução Monta inst. na memória Define endereços / monta dados na memória Montadores

EndConteúdo Vamos agora para um novo exemplo. Seja o programa abaixo. Queremos montá-lo na memória do processador: MOV R1, DADO ORG 1F SUB R2, ROT DADO: DS 3 1F ROT: DW 10 Montadores MNENÔNICOCOMP (BYTES) ROTINA DE TRAT. ORG-RORG DW1RDW DSiRDS END-REND... MNCC. M.COMP (BYTES) ROT. DE TRAT AND R12A2RANDR2 MOV R11E2RMOVR1 SUB R2F32RSUBR2... TABELA DE PSEUDO-INSTRUÇÕES (TPI) TABELA DE INSTRUÇÕES DE MÁQUINA (TIM)

EndConteúdo Vamos agora para um novo exemplo. Seja o programa abaixo. Queremos montá-lo na memória do processador: ORG 1F SUB R2, ROT DADO: DS 3 MNENÔNICOCOMP (BYTES) ROTINA DE TRAT. ORG-RORG DW1RDW DSiRDS END-REND... MNCC. M.COMP (BYTES) ROT. DE TRAT AND R12A2RANDR2 MOV R11E2RMOVR1 SUB R2F32RSUBR2... TABELA DE PSEUDO-INSTRUÇÕES (TPI) TABELA DE INSTRUÇÕES DE MÁQUINA (TIM) 1F ROT: DW 10 MOV R1, DADO Montadores

EndConteúdo Vamos agora para um novo exemplo. Seja o programa abaixo. Queremos montá-lo na memória do processador: ROT: DW 10 MOV R1, DADO ORG 1F SUB R2, ROT DADO: DS 3 1F E 1F Montadores MNENÔNICOCOMP (BYTES) ROTINA DE TRAT. ORG-RORG DW1RDW DSiRDS END-REND... MNCC. M.COMP (BYTES) ROT. DE TRAT AND R12A2RANDR2 MOV R11E2RMOVR1 SUB R2F32RSUBR2... TABELA DE PSEUDO-INSTRUÇÕES (TPI) TABELA DE INSTRUÇÕES DE MÁQUINA (TIM)

EndConteúdo Vamos agora para um novo exemplo. Seja o programa abaixo. Queremos montá-lo na memória do processador: ROT: DW 10 MOV R1, DADO ORG 1F SUB R2, ROT DADO: DS 3 1F A 1F F3 ??? Nest e momento, o montador ainda não conhece o endereço de ROT! Como solucionar?! MNENÔNICOCOMP (BYTES) ROTINA DE TRAT. ORG-RORG DW1RDW DSiRDS END-REND... MNCC. M.COMP (BYTES) ROT. DE TRAT AND R12A2RANDR2 MOV R11E2RMOVR1 SUB R2F32RSUBR2... TABELA DE PSEUDO-INSTRUÇÕES (TPI) TABELA DE INSTRUÇÕES DE MÁQUINA (TIM) Montadores

Problema: Muitas vezes, ao deparar-se com um rótulo, o montador pode não conhecer seu endereço ou significado por não ter processado este símbolo em instruções anteriores. Solução:  Antes de começar a ler o código Assembly e montar o código de máquina na memória, o montador deve ler TODOS os SÍMBOLOS (RÓTULOS) do programa e definir previamente seus endereços.  Os símbolos e seus endereços são alocados na TABELA DE SÍMBOLOS.  Em seguida, o montador lê o código novamente e o monta na memória. MONTADOR DE DOIS PASSOS MOV R1, DADO ORG 1F SUB R2, ROT DADO: DS 3 ROT: DW 10 Montadores

MONTADOR DE DOIS PASSOS - 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: PASSO 1 - Montador lê o código fonte e determina os endereços para as referências simbólicas (rótulos) a partir das pseudo-instruções, construindo a TABELA DE SÍMBOLOS. PASSO 2 O código fonte é lido novamente e os mnemônicos das instruções e rótulos são substituídos por códigos de máquina. EndConteúdo ROT: DW 10 MOV R1, DADO ORG 1F SUB R2, ROT DADO: DS 3 1F E 1F Montadores MNENÔNICOCOMP (BYTES) ROTINA DE TRAT. ORG-RORG DW1RDW DSiRDS END-REND... MNCC. M.COMP (BYTES) ROT. DE TRAT AND R12A2RANDR2 MOV R11E2RMOVR1 SUB R2F32RSUBR2... TABELA DE PSEUDO-INSTRUÇÕES (TPI) TABELA DE INSTRUÇÕES DE MÁQUINA (TIM)

EndConteúdo ROT: DW 10 MOV R1, DADO ORG 1F SUB R2, ROT DADO: DS 3 1F E 1F Vamos então executar o passo 1 e definir a TABELA DE SÍMBOLOS antes de prosseguir com a montagem. TABELA DE SÍMBOLOS (TS) SÍMBOLOENDEREÇO ROT DADO 1F 26 MNENÔNICOCOMP (BYTES) ROTINA DE TRAT. ORG-RORG DW1RDW DSiRDS END-REND... MNCC. M.COMP (BYTES) ROT. DE TRAT AND R12A2RANDR2 MOV R11E2RMOVR1 SUB R2F32RSUBR2... TABELA DE PSEUDO-INSTRUÇÕES (TPI) TABELA DE INSTRUÇÕES DE MÁQUINA (TIM) Montadores

EndConteúdo ROT: DW 10 MOV R1, DADO ORG 1F SUB R2, ROT DADO: DS 3 1F E 1F F3 Vamos então executar o passo 1 e definir a TABELA DE SÍMBOLOS antes de prosseguir com a montagem. 26 Montadores TABELA DE SÍMBOLOS (TS) SÍMBOLOENDEREÇO ROT DADO 1F 26 MNENÔNICOCOMP (BYTES) ROTINA DE TRAT. ORG-RORG DW1RDW DSiRDS END-REND... MNCC. M.COMP (BYTES) ROT. DE TRAT AND R12A2RANDR2 MOV R11E2RMOVR1 SUB R2F32RSUBR2... TABELA DE PSEUDO-INSTRUÇÕES (TPI) TABELA DE INSTRUÇÕES DE MÁQUINA (TIM)

EndConteúdo ROT: DW 10 MOV R1, DADO ORG 1F SUB R2, ROT DADO: DS 3 1F E 1F F3 Vamos então executar o passo 1 e definir a TABELA DE SÍMBOLOS antes de prosseguir com a montagem TABELA DE SÍMBOLOS (TS) SÍMBOLOENDEREÇO ROT DADO 1F 26 MNENÔNICOCOMP (BYTES) ROTINA DE TRAT. ORG-RORG DW1RDW DSiRDS END-REND... MNCC. M.COMP (BYTES) ROT. DE TRAT AND R12A2RANDR2 MOV R11E2RMOVR1 SUB R2F32RSUBR2... TABELA DE PSEUDO-INSTRUÇÕES (TPI) TABELA DE INSTRUÇÕES DE MÁQUINA (TIM) Montadores

Conforme vimos anteriormente, o montador é um Software de Sistema, ou seja, por definição, um programa. Apesar de termos visto intuitivamente o seu funcionamento, o montador é implementado em um computador a partir de algoritmos que executam o passo 1 e o passo 2. Vamos conhecer esses dois algoritmos e montar o mesmo programa que montamos anteriormente... Montadores

ALGORITMO DO PASSO 1 – PROCESSANDO SÍMBOLOS ROT: DW 10 MOV R1, DADO ORG 1F SUB R2, ROT DADO: DS 3 MENÔNICOCOMP. ORG- DW1 DSi END- MNCC. M.COMP. AND R12A2 MOV R11E2 SUB R2F32 TPI TIM SÍMBOLOEND. TS IiCPL 1 1F DADO ROT 1F 26 Montadores

ALGORITMO DO PASSO 2 – GERANDO O CÓDIGO ROT: DW 10 MOV R1, DADO ORG 1F SUB R2, ROT DADO: DS 3 MENÔNICOCOMP. ORG- DW1 DSi END- MNCC. M.COMP. AND R12A2 MOV R11E2 SUB R2F32 TPI TIM SÍMBOLOEND. TS EndConteúdo IiCPL 1 1F DADO ROT 1F 26 1F E 1F F Montadores

Montador de um passo Realiza uma única passagem pelo código fonte. A principal dificuldade em tentar montar um programa em uma única passagem envolve referências a rótulos/símbolos que ainda não foram definidos no programa fonte. Como lidar com referências futuras?  Quando o montador encontra um operando da instrução que é um símbolo ainda não definido, ele:  Deixa o campo do operando da instrução vazio (tudo zero).  Insere o símbolo usado como operando na tabela de símbolos, marcando esta entrada da tabela como não-resolvida.  Adiciona o endereço do campo de operando da instrução que faz referência ao símbolo indefinido a uma lista de referências futuras associadas àquela entrada da tabela de símbolos.  Quando o montador encontra a definição de um símbolo, ele insere o valor do contador de programa na entrada adequada dentro da tabela de símbolos.  Se há uma lista de referências futuras associada a este símbolo, o montador insere o valor correto do símbolo em todas as instruções geradas previamente que estejam nesta lista.

Desafio Um montador de dois passos pode lidar com qualquer tipo de referência a símbolos futuros? Exemplo: A EQUB  A pseudo-instrução EQU associa a um rótulo (no caso, A) o valor do operando (B).  Fácil de executar (passo 1) caso o valor de B tenha sido definido previamente.  Mas e se B ainda não foi definido? O montador de dois passos que vimos não conseguiria lidar com esta situação. A razão desta limitação está associada ao fato de que as instruções são montadas no passo 2, quando todos os símbolos já estão na tabela de símbolos; as diretivas, porém, são “executadas” (têm efeito) apenas no passo 1, quando símbolos futuros ainda não foram encontrados. Por isso, pseudo-instruções, como EQU, não podem usar símbolos futuros.

Observações Tipicamente, o Montador executa sua atividade em dois passos:  No Passo 1, constrói a Tabela de Símbolos, ou seja, determina os rótulos e seus endereços.  No Passo 2, constrói o Programa em Linguagem de Máquina e o aloca na memória. Por fim, nem sempre o programa em linguagem de máquina é alocado diretamente na memória pelo montador. Muitas vezes recorre-se a outro programa dedicado exclusivamente ao carregamento na memória. Esse programa é conhecido como Além disso, o programa pode utilizar recursos fornecidos por outras rotinas, desenvolvidas por outros programadores. Assim, é preciso realizar um outro processo que combina tais rotinas com o código montado. O programa que realiza esta tarefa é conhecido como CARREGADOR LIGADOR