Dissertação
C Compiler and Tools for P3 Educational Processor EVALUATED
Este manuscrito propõe uma implementação de um back-end de um compilador de C para o processador pedagógico P3. O P3 é um processador não-comercial de 16 bits, do tipo CISC, utilizado essencialmente para fins educativos. O compilador desenvolvido permite a tradução de programas básicos, escritos em linguagem C, para código em linguagem assembly do P3. Para tal, utilizou-se a infraestrutura LLVM assumindo-se, ainda, como front-end o Clang. A ferramenta TableGen do LLVM é utilizada para gerar automaticamente classes importantes e definições extensas, facilitando assim o processo de criação do back-end. Por sua vez, as classes e definições, geradas pelo TableGen, foram incluídas no código do compilador para serem usadas em desenvolvimentos posteriores. O back-end de compilador criado implicou o desenvolvimento de ficheiros de descrição da máquina alvo, escritos numa linguagem de descrição específica do LLVM, e ficheiros escritos na linguagem C++, onde se redefinem classes e métodos genéricos do projeto LLVM para a arquitetura do processador P3. Foram utilizados passes do LLVM para implementar passos adicionais de processamento no back-end do compilador. Por exemplo, foi utilizado um pass do LLVM para percorrer um grafo acíclico direcionado e gerar uma lista de instruções assembly equivalentes. Os processos de testagem e avaliação dos resultados obtidos foram completamente automatizados, e basearam-se no princípio de desenvolvimento guiado por testes (em inglês, Test-Driven Development). Optou-se, ainda, pela criação de um conjunto de testes dedicado ao compilador construído, que permitisse avaliar, simultaneamente, a eficácia do compilador e a eficiência do código assembly gerado.
setembro 20, 2021, 10:0
Publicação
Obra sujeita a Direitos de Autor
Orientação
ORIENTADOR
Departamento de Engenharia Electrotécnica e de Computadores (DEEC)
Professor Associado