Use este identificador para citar ou linkar para este item:
https://repositorio.ufms.br/handle/123456789/14179| Tipo: | Trabalho de Conclusão de Curso |
| Título: | Micro C - um Compilador Acadêmico |
| Autor(es): | PEDRO HENRIQUE FERREIRA CARVALHO |
| Primeiro orientador: | BRIVALDO ALVES DA SILVA JUNIOR |
| Resumo: | A construção de compiladores é uma área de grande interesse na ciência da computação pois ela é responsável pela tradução de linguagens de alto nível para código de máquina. No entanto, a complexidade dos compiladores modernos, como o GCC e o Clang/LLVM, ou mesmo da literatura associada ao assunto, tornam seu aprendizado e compreensão difíceis. Este trabalho busca minimizar essa dificuldade construindo um compilador para uma linguagem de programação minimalista (um subconjunto da linguagem de programação C) associando apenas o contexto teórico necessário para a compreensão da construção do compilador. Dessa forma, o objetivo do trabalho é construir um compilador que implemente as fases de compilação, traduzindo a linguagem definida, o Micro C, para código Assembly e, finalmente, um binário executável. Por se tratar de um compilador para aprendizado, todas as etapas de compilação são explícitas e podem ser executadas de forma independente seguindo o pipeline de compilação. Dessa forma, é possível compreender como a linguagem é convertida em seus artefatos intermediários a cada fase do processo. No compilador desenvolvido para a linguagem Micro C, foi utilizado um projeto modular simples dividido em front-end e back-end. O front-end está associado as fases de análise (léxica, sintática e semântica) para converter o código fonte em objetos prontos para conversão em linguagem de máquina. Por outro lado, o back-end realiza a conversão desses objetos em códigos simplificados e, por fim, código Assembly, pronto para serem convertidos em binários. Por fim, vários exemplos de teste foram disponibilizados para validar o compilador em diversos cenários como laços aninhados (Bubble Sort, Peneira de Eratóstenes) e recursão múltipla (Fibonacci, Máximo Divisor Comum). O compilador para a linguagem Micro C equivale, em linhas de código, menos do que 0,027% do compilador GCC, tornando-o uma ferramenta valiosa para o aprendizado e ensino de compiladores. Além disso, o código fonte do compilador e todos os seus artefatos estão disponíveis publicamente. |
| Abstract: | Compiler construction is a field of great interest in computer science, as it is responsible for translating high-level languages into machine code. However, the complexity of modern compilers, such as GCC and Clang/LLVM, or even the existing literature on the subject, makes learning and understanding them difficult. This work aims to mitigate this difficulty by building a compiler for a minimalist programming language (a subset of the C programming language), incorporating only the theoretical context necessary to understand compiler construction. Therefore, the objective of this work is to build a compiler that implements the compilation phases, translating the defined language, Micro C, into Assembly code and, finally, into an executable binary. As this is an educational compiler, all compilation steps are explicit and can be executed independently, following the compilation pipeline. Thus, it is possible to understand how the language is converted into its intermediate artifacts at each phase of the process. In the compiler developed for the Micro C language, a simple modular design divided into front-end and back-end was used. The front-end is associated with the analysis phases (lexical, syntactic, and semantic) to convert the source code into objects ready for conversion into machine language. On the other hand, the back-end converts these objects into simplified codes and, finally, Assembly code, ready to be converted into binaries. Finally, several test examples were made available to validate the compiler in various scenarios, such as nested loops (Bubble Sort, Sieve of Eratosthenes) and multiple recursion (Fibonacci, Greatest Common Divisor). The compiler for the Micro C language amounts to, in lines of code, less than 0.027% of the GCC compiler, making it a valuable tool for learning and teaching compilers. Furthermore, the source code of the compiler and all its artifacts are publicly available. |
| Palavras-chave: | compilador linguagem de programação educação |
| País: | |
| Editor: | Fundação Universidade Federal de Mato Grosso do Sul |
| Sigla da Instituição: | UFMS |
| Tipo de acesso: | Acesso Aberto |
| URI: | https://repositorio.ufms.br/handle/123456789/14179 |
| Data do documento: | 2025 |
| Aparece nas coleções: | Ciência da Computação - Bacharelado (FACOM) |
Arquivos associados a este item:
| Arquivo | Tamanho | Formato | |
|---|---|---|---|
| 22378.pdf | 1,45 MB | Adobe PDF | Visualizar/Abrir |
Os itens no repositório estão protegidos por copyright, com todos os direitos reservados, salvo quando é indicado o contrário.

