ARQUITETURA DE COMPUTADORES Tema: Máquinas multiníveiscontemporâneas: Nível de linguagem de montagem. Alunos: RA: TURMA: Maikon Quirino dos santos C70JJI-5 SI5P30 José de Ribamar C65548-1 SI5P30 Silvana Reis C71105-5 SI4P30 Gustavo Henrique C5470E0 CC5Q30 Jhessika Christine T40272-7 SI5P30
Introdução Um computador digital é uma máquina capaz de solucionar problemas através da execução de instruções que lhe são fornecidas. Denomina-se programa uma sequência de instruções que descreve como executar uma determinada tarefa. Os circuitos eletrônicos de cada computador podem reconhecer e executar diretamente um conjunto limitado de instruções simples, porém mais complexas, para as quais todos os programas devem ser convertidos antes que eles possam ser executados. As instruções primitivas formam uma linguagem que torna possível as pessoas se comunicar com o computador. Tal linguagem é denominada linguagem de máquina. Ao se projetar um novo computador deve-se decidir que instruções devem estar incluídas nesta linguagem de máquina. Há uma relação importante entre uma linguagem e uma máquina virtual. Cada máquina tem a sua linguagem de máquina, que consiste em todas as instruções que a máquina pode executar. De fato, uma máquina define uma linguagem. Do mesmo modo, uma linguagem define uma máquina - ou seja, a máquina que pode executar todos os programas escritos nesta linguagem. Naturalmente, a máquina definida por uma determinada linguagem pode ser enormemente complicada e cara de construir diretamente a partir de circuitos eletrônicos, mas de qualquer modo podemos imaginá-la. Uma máquina com C, Pascal ou COBOL como sua linguagem de máquina seria complicadíssima, mas certamente imaginável e, talvez dentro de alguns anos, tal máquina seja considerada de construção trivial. Os programas escritos na linguagem de máquina de um computador podem ser executados diretamente pelos circuitos eletrônicos do computador, sem quaisquer interpretadores ou tradutores intermediários. Estes circuitos eletrônicos, juntamente com a memória e dispositivos de entrada/saída, constituem o hardware do computador. O hardware é composto de objetos tangíveis - circuitos integrados, placas de circuito impresso, cabos, fontes de alimentação, memórias, leitoras de cartões, impressoras e terminais - em lugar de ideias abstratas, algoritmos ou instruções. O software, ao contrário, consiste em algoritmos (instruções detalhadas que dizem como fazer algo) e suas representações para o computador -ou seja, os programas. Os programas podem estar Interpretação Parcial Tradução Interpretação Executa Tradução Nível de Linguagem de Montagem Nível de Sistema Operacional, mas a essência do software está no conjunto de instruções que constitui os programas, não nos meios físicos sobre os quais eles estão gravados. Neste trabalho iremos aprofundar o sobre a Linguagem de Montagem que é diferente das outras por se tratar de um tradutor e não interpretador -ou seja ela traduz a linguagem-fonte para a linguagem-alvo (para o usuário).
Máquinas Multiníveis contemporâneas A maioria dos computadores modernos tem dois ou mais níveis. N - 0: Nível da Lógica Digital N - 1: Nível da Micro arquitetura N - 2: Nível da Arquitetura do Conjunto de Instruções N - 3: Nível do Sistema Operacional N - 4: Nível da linguagem do montador N - 5: Nível das linguagens Veremos suas características a seguir. Nível 0: Nível da Lógica Digital Nível mais baixo da estrutura Objetos de interesse são conhecidos como portas lógicas Cada porta lógica tem 1 ou mais entradas digitais (aceitam 0 ou1) e calculam funções lógicas simples sobre essas entradas. Exemplo: AND, OR, NOT... Portas lógicas são combinadas para formar o Processador -principal dispositivo do computador Pode combinar para formar memória de 1bit (0 ou 1), essas memórias podem ser combinadas em 16, 32, 64 para formar registradores. Nível 1: Nível da Micro arquitetura Enxergamos uma memória local (8 a 32 registradores) e a UAL (Unidade Aritmética Lógica) que realiza operações aritméticas muito simples Os registradores são conectados a UAL formando o caminho dos dados Operações são controladas por um micro programa ou diretamente porhardware Micro programa é um interpretador para as instruções do nível 2. Ex.: A ALU seleciona dois registros, faz uma operação (+,-...) e guarda oresultado em um deles. A função do micro programa é interpretar asinstruções de nível 2. Poucas são as máquinas que têm mais de 20 instruções no nível do micro programa, e a maior parte destas instruções envolve a movimentação de dados de uma parte da máquina para outra ou alguns testes simples. A microprogramação é utilizada especialmente nas máquinas classificadas de CISC Complex Instruction Set Computer. Este tipo de máquina implementa instruções complexas correspondentes ao nível 2. Isto tende a facilitar a programação decompiladores de uma linguagem de alto nível específica, mas de uma maneira geral compromete o desempenho da máquina.
Isto acontece porque a complexidade dos circuitos lógicos tende a aumentar, criando um caminho mais longo para a propagação do sinal elétrico gerando um maior atraso. Tal atraso implica em uma menor freqüência de operação dos circuitos. Nível 2: Nível da Arquitetura do Conjunto de Instruções Definida pelo fabricante e dependente da arquitetura da Máquina Fabricantes disponibilizam "Manual de Referência da Linguagem de Máquina" ou "Princípios de operação do Computador Modelo XYZ4W), ou algo similar. Manuais descrevem como as instruções são executadas interpretativamente pelo micro programa ou como elas são executadas diretamente pelo hardware. Essas informações são necessárias para os desenvolvedores de sistemas operacionais. O nível 2 corresponde à linguagem de máquina ou o código binário executado pelo Hardware. Na Figura vista, este nível é interpretado para o nível de micro programação, porém nas máquinas RISC - Reduced Instruction Set Computer - o nível 1 (micro programação) não existe. Neste tipo de máquina, o nível 2 é executado (interpretado) diretamente no nível 0. Atualmente este tipo de máquina é considerado mais eficiente e flexível que as CISC. Isto porque, as instruções delas tendem a ser executadas em poucos (ou mesmo um único) ciclos de relógio, permitindo assim ao projetista do compilador, ou ao projetista do Sistema Operacional uma programação mais sob medida (customizado) para cada situação. Entretanto, o código gerado tende a ser mais longo e complexo. Cada máquina ou processador tem sua linguagem própria de nível 2, a qual é documentada em manuais específicos de cada fabricante. Nível 3: Nível do Sistema Operacional Instruções da linguagem deste nível também podem conter instruções do nível ISA. Suporta uma organização diferente de memória Suporta capacidade de rodar 2 ou mais programas simultaneamente Suporta sistemas de comandos ou de janelas (Windows) Programadores deste nível, e também dos níveis mais baixos, são conhecidos como programadores de sistema. Os programadores dos níveis mais altos que este são chamados programadores de aplicação. O nível do Sistema Operacional (S.O.) - é responsável por fornecer serviços básicos para os níveis acima. Tais serviços são: interface (gráfica ou linha de comando) com o usuário (Shell), gerenciamento de memória, escalonamento de processos, acionamento de dispositivos de entrada e saída de dados etc. Este nível é geralmente desenvolvido de forma híbrida, ou seja, parte em uma linguagem de alto nível (como C ou C++, por exemplo), e parte diretamente em linguagem de máquina. Após o seu desenvolvimento, o programa executável em código de máquina é gerado para ser carregado nas máquinas a que se destina. S.O. complexos são desenvolvidos em ambientes computacionais apropriados, porém, os mais simples podem ser desenvolvidos diretamente em linguagem de máquina.
Nível 4: Nível da linguagem do montador Linguagem de montagem: forma simbólica de representação das linguagens do nível mais baixo. Programas nessa linguagem são primeiro traduzidos para as linguagens dos níveis 1, 2 e 3 e depois interpretados pela máquina virtual apropriada ou pela própria máquina real. Programa que realiza essa tradução é chamado de montador O nível de linguagem de montagem, é realmente uma forma simbólica. Todas as linguagens de alto nível são simbólicas, isto é, usam agrupamentos de caracteres alfanuméricos que representam palavras ou expressões matemáticas que apelidam uma instrução de máquina ou correspondem a uma sequência (rotina) de instruções de máquina. Tais apelidos são mais expressivos para os humanos que os códigos numéricos computacionais. Os compiladores traduzem estes caracteres em linguagem de máquina O nível 4 provê um método para as pessoas escreverem programas para os níveis 1, 2, e 3 de uma maneira mais agradável e amigável. Neste nível cada instrução de máquina é apelidada por um mnemônico (por exemplo add, load, sub, mov e etc.) que normalmente correspondem diretamente a uma única instrução de máquina. Assim, o mnemônico é um apelido, mais significativo para os humanos, que representa uma instrução de máquina, ou seja, um código binário executável. Nível 5: Nível das linguagens Orientadas para solução dos problemas Conhecidas como linguagens de alto nível. Exemplos Basic, C, Pascal, Java, LISP,... Programas são geralmente traduzidos para os níveis 3 e 4 por compiladores Alguns são interpretados: Exemplo: programas em Java, MatLab,... Há ainda a existência de outros níveis abaixo do nível 0, que não estão representados na figura. Estes níveis situam-se no campo da engenharia elétrica e da física do estado sólido. Nestes níveis os projetistas enxergam portas lógicas, transistores individuais e o cristal semicondutor, que é o substrato dos circuitos integrados.
Questionário 1- Marque com um (x), como a linguagem de montagem difere do nível de microarquitetura e do nível sistema operacional da máquina. A. ( ) Essa linguagem é implementada por tradução e não por interpretação, como outros os níveis citados. Os programas que convertem um programa de usuário escrito em uma linguagem para outra Linguagem são chamados de tradutores.a linguagem na qual o programa original está expresso é chamada de linguagem-fonte e a linguagem para a qual ele será convertido é conhecida como linguagem-alvo. Tanto a linguagem-fonte quanta a linguagem-alvo definem níveis específicos. B. ( ) Os programas que convertem uma linguagem para o usuário escrito em uma linguagem para outra Linguagem são chamados de tradutores é um programa que cria o código objeto, Além dos comandos básicos, que não traduzidos diretamente para a máquina, alguns montadores também não aceitam diretivas, que são comandos específicos para o programador. C. ( ) Cada um desses montadores tem sua própria versão de código, que pode diferir ao uso de registradores, representação de letras, ou até mesmo sinais,e isso pode facilitar um pouco na portabilidade do código, tendo em vista que o mesmo precisaria ser reescrito para poder ser montado para outra arquitetura. D. ( ) para o código de máquina é feita pelo montador. Ele converte os códigos em seus respectivos backup, calcula os endereços de referências de memória e faz algumas outras operações para gerar o código de máquina que será executado pelo programa. 2- Disserte sobre os dois grupos de tradutores. A. É chamado de Conversor quando a linguagem-fonte for essencialmente uma representação simbólica para uma linguagem de máquina numérica e, portanto, a linguagem-fonte é chamada de linguagem de montagem, o outro tradutor é chamado de pacificador quando a linguagem-fonte for uma linguagem de alto nível. B. Podem ser divididos em dois grupos, dependendo da relação existente entre a linguagem fonte e a linguagem alvo. Quando a linguagem fonte for essencialmente uma representação simbólica para uma linguagem de máquina numérica, o tradutor é chamado de montador e a linguagem fonte é chamada de linguagem de montagem. Quando a linguagem fonte for uma linguagem de alto nível, como é o caso do Pascal ou do C, e a linguagem alvo for uma linguagem de máquina numérica ou uma representação simbólica desta linguagem (linguagem de montagem), o tradutor é chamado de compilador. C. Todos os passos necessários para que um algoritmo expresso em uma linguagem de montagem possa ser carregado em memória para ser executado por um compilador.
Cada fase possui um conjunto de entradas e saídas de seu processamento. Estas fases e seus respectivos hardwares envolvidos são descritas na linguagem de montagem. D. Diferente do processo para um programa em linguagem de máquina, que é bastante simples, pois existe um mapeamento direto de um para um entre os comandos em linguagem de montagem e os equivalentes, código binário, o processo de compilação de linguagens é muito mais simples. 3- Escolhas uma opção dentre as opções, as duas dificuldades de programar usando uma linguagem e montagem. A. Considerando que tudo o que os computadores conseguem entender são sequências intermináveis de números binários, fornece estas "instruções" pode ser muito penoso para um ser humano. B. Para começar, existe uma linguagem "básica" para quem quer aprender a programar, ensinada nos cursos de lógica da programação, o pseudocódigo. Ele não é uma linguagem "de verdade", mas é uma maneira mais simples para aprender os fundamentos usados em todas as linguagens de programação. C. A escrita de um programa na linguagem de montagem consome muito mais tempo do que a escrita desse mesmo programa em uma linguagem de alto nível;a depuração e a manutenção de programas em linguagem de montagem são muito mais difíceis de fazer do que para programas expressos em linguagens de alto nível. D. Assim como nas línguas faladas, existem diferenças de sintaxe, gramática e existem linguagens mais simples ou mais complicadas de aprender e linguagens mais adequadas para tipo de tarefa a realizar. Veja alguns exemplos de linguagens de programação 4 - Complete o trecho a seguir. Uma das., importante de ser mencionada é que um em linguagem de... só pode rodar em uma determinada família de máquinas, enquanto um programa em linguagem de.. Pode rodar (potencialmente) em diversas... a) Diferenças, qualquer,maquina,alto nível,montagens. b) Diferenças, programa, montagem, alto nível,máquinas com arquiteturas diferentes. c) Linguagem, registrador, interpretação,máquina,chamadas. d) Diferença, programa, montagem, maquina alvo, maquinas com arquitetura diferentes. 5 - Julgue os itens(v) verdadeiro e (F) para falso (F) Tudo aquilo que puder ser feito em linguagem de máquina poderá ser Programado em linguagem de montagem, porém a maioria das instruções, dos
Registradores e das demais características de baixo nível de uma máquina estará Disponível para uso dos programadores de linguagens de alto nível. R: Tudo aquilo que puder ser feito em linguagem de máquina poderá ser Programado em linguagem de montagem, porém a maioria das instruções, dos Registradores e das demais características de baixo nível de uma máquina não estará. Disponível para uso dos programadores de linguagens de alto nível. (V)um programa em linguagem do montador pode executar qualquer uma das instruções do conjunto de instruções da máquina-alvo, mas o programa em linguagem de alto nível não pode fazer isso. ( F) No processo de interpretação existem dois processos e no tradução um único processo. R:No processo de interpretação existe um único processo enquanto no de tradução são Efetuado dois processos. (V)O tradutor é chamado de montador quando a linguagem-fonte for essencialmente uma representação simbólica para uma linguagem de máquina numérica e, portanto, a linguagem-fonte é chamada de linguagem de montagem. (F)O tradutor é chamado de montador quando a linguagem-fonte for uma Linguagem de alto nível, como e o caso do Java ou do C, e a linguagem-alvo for uma linguagem de máquina numérica ou uma representação simbólica dessa Iinguagem. R:O tradutor é chamado de compilador quando a linguagem-fonte for uma linguagem de alto nível, como e o caso do Java ou do C, e a linguagem-alvo for uma linguagem de máquina numérica ou uma representação simbólica dessa Iinguagem. A. VFVVV B. FFVVF C. FVFVF D. VFVFV