Você está na página 1de 2

Faculdade Catlica Salesiana do Esprito Santo Prof.

Otvio Massashi Mine Arquitetura de Computadores Sistemas de Informao turma B (Noturno) Linguagem de Mquina, Linguagens de Programao, Compiladores (compilers), Interpretadores (interpreters), Montadores (assemblers), Ligadores (linkers) e Carregadores (loaders) A nica linguagem que o computador entende a linguagem de mquina, que representada por 0s e 1s. Pelo fato das linguagens de mquina serem muito distantes da linguagem natural, torna-se difcil para o ser humano comunicar sua vontade ao computador. Na prtica, as pessoas no escrevem instrues diretamente na linguagem de mquina, mas em uma linguagem de programao, com um nvel de abstrao mais alto. Algumas linguagens de programao se aproximam bastante da linguagem de mquina, como o assembly (linguagem de baixo nvel). Os Montadores, ou assemblers, montam um programa em linguagem de mquina a partir de sua verso em linguagem de montagem, ou linguagem assembly (opcode, nmero do registrador, nmeros, etc.), convertendo-os para 0s e 1s. Tais programas, escritos em linguagem de mquina, so gravados em um arquivo com as instrues ordenadas e com os endereos indicados por elas, especificados como labels, j convertidos para nmeros. Aes: 1) Acham um endereo inicial para o programa; 2) Determinam o comprimento de cada instruo; 3) Precisam conhecer quantos operandos so requeridos para cada instruo; 4) Substituem todas as instrues e operandos pelos equivalentes binrios; 5) Determinam as posies de memria, relativas ao programa, para os endereos simblicos, e substituir tais endereos simblicos pelos endereos binrios; 6) Marcar todas as referncias simblicas no resolvidas; 7) Marcar os endereos simblicos externamente referenciveis; O arquivo gerado pelo montador chamado de arquivo objeto, e em geral pode ser executado diretamente pelo computador. Ligadores ou linkers so programas especiais que recebem como entrada os arquivos objeto e geram como sada o programa final em linguagem de mquina. Aes: 1) Determinam as posies de memria para os trechos de cdigo de cada mdulo que compe o programa sendo linkado; 2) Resolvem as referncias entre os arquivos; 3) Procuram nas bibliotecas (libraries), indicadas pelo programador, as rotinas usadas nos fontes de cada segmento; 4) Indicam ao programador quais so os endereos simblicos que no foram resolvidos (no tenham correspondente em nenhum segmento ou bibliotecas indicadas). Programas que tenham sido linkados sem erros esto prontos para serem executados! Carregadores (ou Loaders) so programas que fazem parte do Sistema Operacional usado para carregar os arquivos objeto para a memria. Para iniciar o execuo de um programa, o carregador realiza as seguintes operaes: 1) Determina o tamanho de todas as partes de um programa e aloca memria para todas elas 2) Copia as instrues e os dados para o trecho de memria separado 3) Inicializa os registradores do processador para valores apropriados 4) Salta para a primeira instruo do programa usando a instruo da mquina utilizada para chamada de procedimento (start)

Junto com essas linguagens foram desenvolvidos processos para transformar os cdigos destas linguagens de alto nvel em cdigos de mquina. Tais processos so chamados de Compilao e Interpretao. Compiladores so programas que recebem como entrada arquivos texto contendo mdulos escritos em linguagem de alto nvel e geram como sada arquivos objeto correspondentes a cada mdulo, ou, se todas as bibliotecas e mdulos so apresentados como entrada, geram um programa executvel diretamente. 1) Criamos um programa feito com a linguagem de alto nvel L1. 2) Executamos um programa que transforma todas as instrues escritas em L1, nas instrues equivalentes em uma linguagem de baixo nvel L0 (linguagem de mquina). 3) O processador ento executa o programa feito totalmente em linguagem L0. Essa tcnica conhecida como compilao. A esse programa que transforma um programa escrito na linguagem L1 para a linguagem L0, chamamos de compilador. Assim, na compilao, o programa todo traduzido de uma linguagem de mais alto nvel para linguagem de mquina de uma s vez e armazenado em linguagem de mquina para futuras execues. So exemplos de linguagens de programao compiladas a linguagem C, C++, Delphi, Pascal... Interpretadores so programas que recebem como entrada arquivos texto contendo programas em linguagem assembly ou linguagem de alto nvel. Estes percorrem os programas, a partir de seu ponto de entrada, executando cada comando. 1. Criamos um programa feito com a linguagem de alto nvel L1. 2. Executamos um programa que transforma todas as instrues escritas em L1, nas instrues equivalentes em uma linguagem de baixo nvel L0 (linguagem de mquina) e envia essas instrues para a execuo. Essa tcnica conhecida como interpretao. A esse programa que transforma um programa escrito na linguagem L1 para a linguagem L0, chamamos de interpretador. Em linguagens interpretadas, o programa executado medida que traduzido, linha a linha. No existe um arquivo executvel. Linguagens interpretadas tambm so chamadas de linguagens de script. Dentre as linguagens interpretadas podemos destacar Python, Pearl, JavaScript, Prolog, ... Mquinas Virtuais Uma mquina virtual um programa que emula uma mquina e tem seu conjunto de instruo. A mquina virtual executada sobre uma mquina real. Assim, o cdigo escrito em uma linguagem L2 compilado para a linguagem L1 entendido pela mquina virtual. A mquina virtual, por sua vez, interpreta linha a linha o cdigo em L1 o transformando na linguagem da mquina real. Princpios bsicos: Para aumentar a performance, as mquinas virtuais ao invs de interpretar linha a linha o cdigo de L1 para L0 podem compilar blocos de uma s vez, de acordo com as necessidades. Essa tcnica chamada JIT (Just in time). A linguagem Java o maior exemplo de linguagem que utiliza-se de mquinas virtuais (JVM). Atualmente as JVM utilizam-se da tcnica JIT.