Informações Principais
     Resumo
     Abstract
     Introdução
     Conclusão
     Download
  
  
  
 
Introdução
 
 
Acadêmico(a): Guilherme Luís Maba
Título: Implementação de um Compilador para uma Linguagem de Programação com Geração de Código LVIS e MSIL
 
Introdução:
A necessidade de escrever sequências de códigos para realizar as computações desejadas vem desde o final da década de 1940, quando foi proposto por John von Neumann que um programa poderia ser armazenado em um computador (LOUDEN, 2004, p. 2). As sequências de códigos, conforme relata Delamaro (2004, p. 1), podem representar alguma forma de dado ou podem ser uma instrução a ser realizada pelo computador. O conjunto destas instruções constitui um programa que define o que e como deve ser executado. Louden (2004, p. 3) afirma que práticas de codificação requerem um planejamento minucioso, porque alguns detalhes das sequências de códigos são desafiadores e às vezes podem ser complexos mesmo que se tenha uma boa fundamentação teórica.
Sendo assim, para desenvolver programas em um alto nível de abstração, sem a necessidade de criar diretamente as sequências de códigos de máquina, foram desenvolvidas as linguagens de programação de alto nível. “Existem milhares de linguagens fonte, que vão de linguagens de programação tradicionais, tais como Fortran e Pascal, às linguagens especializadas que emergiram virtualmente em quase todas as áreas de aplicação de computadores” (AHO et al., 2008, p. 1). Porém, para executar um programa escrito em uma linguagem de alto nível é preciso compilar o mesmo para uma linguagem de máquina, real ou virtual, como Java Virtual Machine (JVM), Low Level Virtual Machine (LLVM) e Common Language Runtime (CLR).
Wennborg (2010, p. 3) descreve que a LLVM é uma máquina virtual que executa programas representados por um conjunto de instruções de três endereços, conhecido por LLVM Virtual Instruction Set (LVIS). Esta execução pode ser interpretada pela máquina virtual, pode ser compilada dinamicamente ou executada diretamente utilizando seu código objeto. Já a CLR, conforme Cordeiro (2005, p. 1) define, é a máquina virtual baseada em pilha do framework .NET. Esta máquina executa códigos de uma linguagem intermediária, a MicroSoft Intermediate Language (MSIL), ou código nativo para máquina virtual.
Diante do exposto, neste trabalho propõe-se especificar uma linguagem de programação e desenvolver um compilador, gerando código LVIS e MSIL, respectivamente, para as máquina virtuais LLVM e CLR do framework .NET.