Geração automática de backend de compiladores baseada em ADLs

Detalhes bibliográficos
Autor(a) principal: Auler, Rafael, 1986-
Data de Publicação: 2011
Tipo de documento: Dissertação
Idioma: por
Título da fonte: Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP)
Texto Completo: https://hdl.handle.net/20.500.12733/1616716
Resumo: Orientador: Paulo Cesar Centoducatte
id UNICAMP-30_542bae2014a86ca8be0eaba518192d36
oai_identifier_str oai::839953
network_acronym_str UNICAMP-30
network_name_str Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP)
repository_id_str
spelling Geração automática de backend de compiladores baseada em ADLsADL based automatic compiler backend generationCompiladores (Computadores)Arquitetura de computadorSistema de computaçãoProgramação automática (Computação)Compiling (Electronic computers)Computer architectureComputer systemsAutomatic programming (Computer science)Orientador: Paulo Cesar CentoducatteDissertação (mestrado) - Universidade Estadual de Campinas, Instituto de ComputaçãoResumo: O processo de automatização da criação de backends de compiladores, isto é, do componente responsável pela tradução final para código de máquina, é perseguido desde o surgimento dos primeiros compiladores. A separação entre os algoritmos empregados no backend e a descrição formal da máquina, que requer conhecimento sobre a arquitetura alvo, é uma característica bastante desejada, uma vez que propicia a criação de novos backends sem a necessidade de conhecer o projeto do compilador, mas apenas do processador. Por esse motivo, um esforço natural para manter o desenvolvimento simples e intuitivo é a concentração do conhecimento sobre a máquina alvo em uma forma concisa de descrição, a partir da qual seja possível especializar algoritmos genéricos de compilação para este alvo específico. Uma linguagem de descrição de arquiteturas (ADL) permite a especificação das características arquiteturais de processadores, incluindo o seu conjunto de instruções (ISA). Neste trabalho, um estudo de mecanismos para gerar backend de compiladores através de descrições arquiteturais de processadores é apresentado, com ênfase no estudo de caso da ADL ArchC com o compilador LLVM. Um protótipo de um gerador de backends para LLVM a partir de uma descrição em ArchC foi desenvolvido, e backends para as arquiteturas ARM, MIPS, SPARC e PowerPC foram gerados com sucesso. Para alcançar este objetivo, foi usado um algoritmo de busca para resolver o problema da programação automática e inferir como implementar fragmentos pré-selecionados da linguagem intermediária LLVM utilizando instruções de uma arquitetura alvo arbitrária. Quatro técnicas para aumentar a velocidade deste algoritmo são apresentadas, de forma a não somente viabilizar uma solução para a geração automática de backends, mas também concluir o processo em menos de 20 segundos para três das quatro arquiteturas testadas. Programas do benchmark Mibench foram compilados com os compiladores gerados, executados com simuladores ArchC e os resultados comparados com aqueles gerados a partir dos mesmos programas compilados com os compiladores gcc e LLVM original, validando os novos backends. A qualidade do código gerado pode ser comparada com a de compiladores consagrados, caso seja utilizado um otimizador peephole para realizar substituições simples de algumas sequências ineficientesAbstract: Researchers pursue the automation of compiler backend generation, the component responsible for final translation from intermediate language to machine code, since the begining of compilers theory creation. The separation between the algorithms used in the backend and formal machine description, which encompasses knowledge about the target architecture, is an important feature, since it facilitates the creation of new backends without the need for deep understanding of the compiler project. For this reason, an effort to maintain the development natural, simple and intuitive must concentrate the knowledge of the target machine in a concise description in a way it is possible to specialize generic algorithms to this target. An architecture description language (ADL) allows the specification of architectural features of processors, comprising the instruction set architecture available. This work presents a study of mechanisms for generating compiler backend through architectural descriptions of processors, with emphasis on a case study of the ArchC ADL with the LLVM compiler. We developed an automatic backend generator prototype for LLVM backends based on ArchC and successfully generated backends for the architectures ARM, MIPS, PowerPC and SPARC. To achieve this, we used a search algorithm to solve the problem of automatic programming and to infer how to implement pre-selected fragments of LLVM intermediate language using instructions of an arbitrary target architecture. We present four techniques to increase the speed of this algorithm which not only enables a solution for the automatic generation of backends, but also completes the process in less than 20 seconds for three of four architectures tested. Test compilation of Mibench benchmark programs attested the proper functioning of the backend and revealed that the quality of the generated code can compare with that of existing compilers, if a peephole optimizer were used to perform some simple substitutions of inefficient sequencesMestradoCiência da ComputaçãoMestre em Ciência da Computação[s.n.]Centoducatte, Paulo Cesar, 1957-Furtado, Olinto Jose VarelaAzevedo, Rodolfo Jardim deUniversidade Estadual de Campinas (UNICAMP). Instituto de ComputaçãoPrograma de Pós-Graduação em Ciência da ComputaçãoUNIVERSIDADE ESTADUAL DE CAMPINASAuler, Rafael, 1986-2011info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdf129 p. : il.https://hdl.handle.net/20.500.12733/1616716AULER, Rafael. Geração automática de backend de compiladores baseada em ADLs. 2011. 129 p. Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação, Campinas, SP. Disponível em: https://hdl.handle.net/20.500.12733/1616716. Acesso em: 3 set. 2024.https://repositorio.unicamp.br/acervo/detalhe/839953porreponame:Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP)instname:Universidade Estadual de Campinas (UNICAMP)instacron:UNICAMPinfo:eu-repo/semantics/openAccess2017-02-18T06:28:07Zoai::839953Biblioteca Digital de Teses e DissertaçõesPUBhttp://repositorio.unicamp.br/oai/tese/oai.aspsbubd@unicamp.bropendoar:2017-02-18T06:28:07Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) - Universidade Estadual de Campinas (UNICAMP)false
dc.title.none.fl_str_mv Geração automática de backend de compiladores baseada em ADLs
ADL based automatic compiler backend generation
title Geração automática de backend de compiladores baseada em ADLs
spellingShingle Geração automática de backend de compiladores baseada em ADLs
Auler, Rafael, 1986-
Compiladores (Computadores)
Arquitetura de computador
Sistema de computação
Programação automática (Computação)
Compiling (Electronic computers)
Computer architecture
Computer systems
Automatic programming (Computer science)
title_short Geração automática de backend de compiladores baseada em ADLs
title_full Geração automática de backend de compiladores baseada em ADLs
title_fullStr Geração automática de backend de compiladores baseada em ADLs
title_full_unstemmed Geração automática de backend de compiladores baseada em ADLs
title_sort Geração automática de backend de compiladores baseada em ADLs
author Auler, Rafael, 1986-
author_facet Auler, Rafael, 1986-
author_role author
dc.contributor.none.fl_str_mv Centoducatte, Paulo Cesar, 1957-
Furtado, Olinto Jose Varela
Azevedo, Rodolfo Jardim de
Universidade Estadual de Campinas (UNICAMP). Instituto de Computação
Programa de Pós-Graduação em Ciência da Computação
UNIVERSIDADE ESTADUAL DE CAMPINAS
dc.contributor.author.fl_str_mv Auler, Rafael, 1986-
dc.subject.por.fl_str_mv Compiladores (Computadores)
Arquitetura de computador
Sistema de computação
Programação automática (Computação)
Compiling (Electronic computers)
Computer architecture
Computer systems
Automatic programming (Computer science)
topic Compiladores (Computadores)
Arquitetura de computador
Sistema de computação
Programação automática (Computação)
Compiling (Electronic computers)
Computer architecture
Computer systems
Automatic programming (Computer science)
description Orientador: Paulo Cesar Centoducatte
publishDate 2011
dc.date.none.fl_str_mv 2011
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv https://hdl.handle.net/20.500.12733/1616716
AULER, Rafael. Geração automática de backend de compiladores baseada em ADLs. 2011. 129 p. Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação, Campinas, SP. Disponível em: https://hdl.handle.net/20.500.12733/1616716. Acesso em: 3 set. 2024.
url https://hdl.handle.net/20.500.12733/1616716
identifier_str_mv AULER, Rafael. Geração automática de backend de compiladores baseada em ADLs. 2011. 129 p. Dissertação (mestrado) - Universidade Estadual de Campinas, Instituto de Computação, Campinas, SP. Disponível em: https://hdl.handle.net/20.500.12733/1616716. Acesso em: 3 set. 2024.
dc.language.iso.fl_str_mv por
language por
dc.relation.none.fl_str_mv https://repositorio.unicamp.br/acervo/detalhe/839953
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
129 p. : il.
dc.publisher.none.fl_str_mv [s.n.]
publisher.none.fl_str_mv [s.n.]
dc.source.none.fl_str_mv reponame:Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP)
instname:Universidade Estadual de Campinas (UNICAMP)
instacron:UNICAMP
instname_str Universidade Estadual de Campinas (UNICAMP)
instacron_str UNICAMP
institution UNICAMP
reponame_str Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP)
collection Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP)
repository.name.fl_str_mv Biblioteca Digital de Teses e Dissertações da Universidade Estadual de Campinas (UNICAMP) - Universidade Estadual de Campinas (UNICAMP)
repository.mail.fl_str_mv sbubd@unicamp.br
_version_ 1809189066694983680