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

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

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

Apresentações semelhantes


Apresentação em tema: "EA869 Montadores Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato."— Transcrição da apresentação:

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

2 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).

3 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

4 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.

5 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

6 Evolução Primeiro SO: Pessoas! Sistema Operacional

7 1980: MS-DOS Sistema Operacional Evolução

8 1985: WINDOWS 1.0 Evolução Sistema Operacional

9 1990: WINDOWS 3.0 Sistema Operacional Evolução

10 WINDOWS 95 Sistema Operacional Evolução

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

12 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

13 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

14 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

15 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

16 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

17 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

18 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

19 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

20 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

21 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

22 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 03 21 22 1E 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

23 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 03 21 22 1E 05 23 24 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

24 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

25 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)

26 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 20 21 00 ROT: DW 10 MOV R1, DADO Montadores

27 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 20 21 00 22 23 1E 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)

28 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 20 21 00 22 23 2A 1F 24 25 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

29 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

30 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 20 21 00 22 23 1E 1F 24 25 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)

31 EndConteúdo ROT: DW 10 MOV R1, DADO ORG 1F SUB R2, ROT DADO: DS 3 1F 20 21 00 22 23 1E 1F 24 25 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

32 EndConteúdo ROT: DW 10 MOV R1, DADO ORG 1F SUB R2, ROT DADO: DS 3 1F 20 21 00 22 23 1E 1F 24 25 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)

33 EndConteúdo ROT: DW 10 MOV R1, DADO ORG 1F SUB R2, ROT DADO: DS 3 1F 20 21 00 22 23 1E 1F 24 25 F3 Vamos então executar o passo 1 e definir a TABELA DE SÍMBOLOS antes de prosseguir com a montagem. 26 10 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

34 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

35 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 - 2 3 4 5 22 24 26 27 3 2 2 1 DADO ROT 1F 26 Montadores

36 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 - 2 3 4 5 22 24 26 27 3 2 2 1 DADO ROT 1F 26 1F 20 21 00 22 23 1E 1F 24 25 F3 26 10 Montadores

37 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.

38 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.

39 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


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

Apresentações semelhantes


Anúncios Google