Um pouco mais sobre compiladores

11/06/2008 at 6:37 (Antes da primeira prova) ()

Breve Histórico dos compiladores

Os primeiros computadores não usavam compiladores, porque eles tinham apenas alguns poucos opcodes (pseudocódigos) e pouca memória e os usuários entravam com código binário de máquina diretamente. No final dos anos 40, os programadores descobriram que o código de máquina tedioso poderia ser representado usando alguns mnemônicos – abreviações de palavras, o que deu origem à linguagem assembly. Adicionalmente, os próprios computadores poderiam traduzir estes mnemônicos em linguagem de máquina.

Durante os anos 50, as linguagens de assembly dependentes da máquina para a qual eram projetadas ainda não eram ideais para os programadores, e por essa razão evoluíram as linguagens de alto-nível e independentes da máquina subjacente. Vários compiladores experimentais foram desenvolvidos desde então, começando com o trabalho de Grace Hopper na linguagem A-0.

O crédito do primeiro compilador completo, em 1957, é atribuído à equipe de desenvolvimento do FORTRAN, liderada por John Backus da IBM. O COBOL foi a primeira linguagem a ser compilada em múltiplas arquiteturas, em 1960.

O primeiro compilador autocontido – ou seja, capaz de compilar o seu próprio código-fonte em uma linguagem de alto-nível – foi criado para o LISP por Hart e Levin no MIT em 1962.

Link Permanente Deixe um comentário

Compiladores vs Interpretadores

11/06/2008 at 6:36 (Antes da primeira prova) (, )

Após definir-se a sintaxe e a semântica da linguagem, precisa-se de uma forma eficiente para a implementação de cada um dos elementos da linguagem. Essa implementação é feita por programas processadores: compiladores e interpretadores, ou ainda um misto entre estas formas de processadores.

  • Compiladores: os programas são transformados, por inteiro, em um conjunto correspondente de instruções que podem ser fisicamente efetuadas pelo computador. A execução do programa é feita diretamente através dessas instruções de computador; o programa inteiro constitui uma unidade a ser transferida “em um único lote” para o computador.
  • Interpretadores: cada expressão do programa é executada diretamente, ou seja, transformada nas instruções correspondentes e acionada no computador sem ter-se a necessidade de transformar o programa inteiro em uma unidade de execução. As expressões do programa são executadas sob demanda.

Um compilador é um programa de computador – ou um conjunto de programas – que traduzem texto(s) escrito(s) em uma determinada linguagem de computador (a linguagem-fonte) em outra linguagem de computador (a linguagem-alvo).

Link Permanente Deixe um comentário

Compiladores

11/06/2008 at 6:03 (Antes da primeira prova) (, , , )

1. Assembly e Compiladores

A razão mais comum para se querer traduzir código fonte é a de criar um programa executável. O nome “compilador” é reservado para programas que traduzem código- fonte de uma linguagem de alto-nível para uma de baixo-nível (por exemplo, em linguagem de máquina ou linguagem assembly).

Linguagem Assembly é uma versão mnemônica do código de máquina, na qual, nomes são usados ao invés de códigos binários. O assembler (montador) converte as instruções em linguagem assembly para a linguagem objeto relocável.

2. Linker

- Tem por função receber o código relocável, produzido pelo assembler, combinar com outros arquivos e gerar um arquivo executável.

- Lembrando que saída do linker é um único arquivo, sendo ainda um código objeto relocável.

3. Loader

O loader possui as funções de:

  • Ler o código objeto relocável do disco que foi produzido pelo linker;
  • Determinar o endereço de memória que o programa será carregado;
  • Alterar os endereços relocáveis das instruções que fazem acesso à memória, obtendo assim o código objeto absoluto;
  • Carregar as instruções alteradas e os dados na memória, no endereço apropriado.

    Link Permanente Deixe um comentário