Estratégias de solução para o problema de alocação de registradores em compiladores

Detalhes bibliográficos
Autor(a) principal: Shimosaka, Gabriel Hitoshi
Data de Publicação: 2019
Tipo de documento: Trabalho de conclusão de curso
Idioma: por
Título da fonte: Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))
Texto Completo: http://repositorio.utfpr.edu.br/jspui/handle/1/24656
Resumo: O principal objetivo de um compilador é transformar o código de uma linguagem fonte em uma linguagem objeto. Para isso, o código gerado pelo compilador deve fazer uso efetivo dos recursos limitados do processador. Entre os recursos mais restritos, está o conjunto de registradores. Portanto, a alocação de registradores é uma etapa de extrema importância para o processo de compilação. Compiladores modernos geralmente abstraem esse problema como um problema de Coloração de Grafo, pois este tipo de abordagem captura alguns dos aspectos críticos da alocação. Porém, realizar esta coloração de forma ótima, ou seja, da melhor maneira possível, caracteriza-se como um problema NP-Completo. Como os algoritmos conhecidos que resolvem estes problemas de maneira exata possuem um comportamento de pior caso exponencial, as heurísticas são adotas. Elas são capazes de dar uma boa solução em um tempo aceitável. Com o desenvolvimento deste trabalho foi possível realizar um comparativo entre diferentes estratégias e implementar uma solução alternativa com resultados iguais ou superiores.
id UTFPR-12_6bd54b73e453f401eb4181d54c98be1c
oai_identifier_str oai:repositorio.utfpr.edu.br:1/24656
network_acronym_str UTFPR-12
network_name_str Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))
repository_id_str
spelling 2021-04-06T19:19:40Z2021-04-06T19:19:40Z2019-12-12SHIMOSAKA, Gabriel Hitoshi. Estratégias de solução para o problema de alocação de registradores em compiladores. 2019. Trabalho de Conclusão de Curso (Engenharia de Computação) - Universidade Tecnológica Federal do Paraná (UTFPR), Pato Branco, 2019.http://repositorio.utfpr.edu.br/jspui/handle/1/24656O principal objetivo de um compilador é transformar o código de uma linguagem fonte em uma linguagem objeto. Para isso, o código gerado pelo compilador deve fazer uso efetivo dos recursos limitados do processador. Entre os recursos mais restritos, está o conjunto de registradores. Portanto, a alocação de registradores é uma etapa de extrema importância para o processo de compilação. Compiladores modernos geralmente abstraem esse problema como um problema de Coloração de Grafo, pois este tipo de abordagem captura alguns dos aspectos críticos da alocação. Porém, realizar esta coloração de forma ótima, ou seja, da melhor maneira possível, caracteriza-se como um problema NP-Completo. Como os algoritmos conhecidos que resolvem estes problemas de maneira exata possuem um comportamento de pior caso exponencial, as heurísticas são adotas. Elas são capazes de dar uma boa solução em um tempo aceitável. Com o desenvolvimento deste trabalho foi possível realizar um comparativo entre diferentes estratégias e implementar uma solução alternativa com resultados iguais ou superiores.The main purpose of a compiler is to transform the code from a source language into a target language. To this end, the code generated by the compiler must make effective use of the limited processor resources. The set of registers is one of the most restricted resources in a processor. Therefore, the register allocation is an extremely important stage for the compilation process. Modern compilers generally abstract this problem as a Graph Coloring problem, because this type of approach captures some of the critical aspects of allocation. However, performing this coloration optimally, that is, in the best possible way, is characterized as an NP-Complete problem. Because known algorithms that solve these problems accurately have a worst-case exponential behavior, heuristics are adopted. They are able to give a good solution in an acceptable time. With the development of this paper, it was possible to compare different strategies and implement an alternative solution with equal or better results.porUniversidade Tecnológica Federal do ParanáPato BrancoEngenharia de ComputaçãoUTFPRBrasilDepartamento Acadêmico de InformáticaCNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::SISTEMAS DE COMPUTACAOCompiladores (Computadores)Programação heurísticaGrafos de ligaçãoCompiling (Electronic computers)Heuristic programmingBond graphsEstratégias de solução para o problema de alocação de registradores em compiladoresSolution strategies for the register allocation problem in compilersinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/bachelorThesisPato BrancoBarbosa, Marco Antonio de CastroBarbosa, Marco Antonio de CastroCasanova, DalcimarDenardin, Gustavo WeberShimosaka, Gabriel Hitoshiinfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))instname:Universidade Tecnológica Federal do Paraná (UTFPR)instacron:UTFPRORIGINALPB_COENC_2019_207.pdfPB_COENC_2019_207.pdfapplication/pdf815938http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/24656/1/PB_COENC_2019_207.pdf587702ed8172887d33e61226ec42535fMD51LICENSElicense.txtlicense.txttext/plain; charset=utf-81290http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/24656/2/license.txtb9d82215ab23456fa2d8b49c5df1b95bMD52TEXTPB_COENC_2019_207.pdf.txtPB_COENC_2019_207.pdf.txtExtracted texttext/plain120763http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/24656/3/PB_COENC_2019_207.pdf.txtd419957b81af2d41dc0d2754e7076068MD53THUMBNAILPB_COENC_2019_207.pdf.jpgPB_COENC_2019_207.pdf.jpgGenerated Thumbnailimage/jpeg1307http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/24656/4/PB_COENC_2019_207.pdf.jpg9f293c653ef700583f178be6e5897796MD541/246562021-04-07 03:11:46.889oai:repositorio.utfpr.edu.br:1/24656TmEgcXVhbGlkYWRlIGRlIHRpdHVsYXIgZG9zIGRpcmVpdG9zIGRlIGF1dG9yIGRhIHB1YmxpY2HDp8OjbywgYXV0b3Jpem8gYSBVVEZQUiBhIHZlaWN1bGFyLCAKYXRyYXbDqXMgZG8gUG9ydGFsIGRlIEluZm9ybWHDp8OjbyBlbSBBY2Vzc28gQWJlcnRvIChQSUFBKSBlIGRvcyBDYXTDoWxvZ29zIGRhcyBCaWJsaW90ZWNhcyAKZGVzdGEgSW5zdGl0dWnDp8Ojbywgc2VtIHJlc3NhcmNpbWVudG8gZG9zIGRpcmVpdG9zIGF1dG9yYWlzLCBkZSBhY29yZG8gY29tIGEgTGVpIG5vIDkuNjEwLzk4LCAKbyB0ZXh0byBkZXN0YSBvYnJhLCBvYnNlcnZhbmRvIGFzIGNvbmRpw6fDtWVzIGRlIGRpc3BvbmliaWxpemHDp8OjbyByZWdpc3RyYWRhcyBubyBpdGVtIDQgZG8gCuKAnFRlcm1vIGRlIEF1dG9yaXphw6fDo28gcGFyYSBQdWJsaWNhw6fDo28gZGUgVHJhYmFsaG9zIGRlIENvbmNsdXPDo28gZGUgQ3Vyc28gZGUgR3JhZHVhw6fDo28gZSAKRXNwZWNpYWxpemHDp8OjbywgRGlzc2VydGHDp8O1ZXMgZSBUZXNlcyBubyBQb3J0YWwgZGUgSW5mb3JtYcOnw6NvIGUgbm9zIENhdMOhbG9nb3MgRWxldHLDtG5pY29zIGRvIApTaXN0ZW1hIGRlIEJpYmxpb3RlY2FzIGRhIFVURlBS4oCdLCBwYXJhIGZpbnMgZGUgbGVpdHVyYSwgaW1wcmVzc8OjbyBlL291IGRvd25sb2FkLCB2aXNhbmRvIGEgCmRpdnVsZ2HDp8OjbyBkYSBwcm9kdcOnw6NvIGNpZW50w61maWNhIGJyYXNpbGVpcmEuCgogIEFzIHZpYXMgb3JpZ2luYWlzIGUgYXNzaW5hZGFzIHBlbG8ocykgYXV0b3IoZXMpIGRvIOKAnFRlcm1vIGRlIEF1dG9yaXphw6fDo28gcGFyYSBQdWJsaWNhw6fDo28gZGUgClRyYWJhbGhvcyBkZSBDb25jbHVzw6NvIGRlIEN1cnNvIGRlIEdyYWR1YcOnw6NvIGUgRXNwZWNpYWxpemHDp8OjbywgRGlzc2VydGHDp8O1ZXMgZSBUZXNlcyBubyBQb3J0YWwgCmRlIEluZm9ybWHDp8OjbyBlIG5vcyBDYXTDoWxvZ29zIEVsZXRyw7RuaWNvcyBkbyBTaXN0ZW1hIGRlIEJpYmxpb3RlY2FzIGRhIFVURlBS4oCdIGUgZGEg4oCcRGVjbGFyYcOnw6NvIApkZSBBdXRvcmlh4oCdIGVuY29udHJhbS1zZSBhcnF1aXZhZGFzIG5hIEJpYmxpb3RlY2EgZG8gQ8OibXB1cyBubyBxdWFsIG8gdHJhYmFsaG8gZm9pIGRlZmVuZGlkby4gCk5vIGNhc28gZGUgcHVibGljYcOnw7VlcyBkZSBhdXRvcmlhIGNvbGV0aXZhIGUgbXVsdGljw6JtcHVzLCBvcyBkb2N1bWVudG9zIGZpY2Fyw6NvIHNvYiBndWFyZGEgZGEgCkJpYmxpb3RlY2EgY29tIGEgcXVhbCBvIOKAnHByaW1laXJvIGF1dG9y4oCdIHBvc3N1YSB2w61uY3Vsby4KRepositório de PublicaçõesPUBhttp://repositorio.utfpr.edu.br:8080/oai/requestopendoar:2021-04-07T06:11:46Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT)) - Universidade Tecnológica Federal do Paraná (UTFPR)false
dc.title.pt_BR.fl_str_mv Estratégias de solução para o problema de alocação de registradores em compiladores
dc.title.alternative.pt_BR.fl_str_mv Solution strategies for the register allocation problem in compilers
title Estratégias de solução para o problema de alocação de registradores em compiladores
spellingShingle Estratégias de solução para o problema de alocação de registradores em compiladores
Shimosaka, Gabriel Hitoshi
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::SISTEMAS DE COMPUTACAO
Compiladores (Computadores)
Programação heurística
Grafos de ligação
Compiling (Electronic computers)
Heuristic programming
Bond graphs
title_short Estratégias de solução para o problema de alocação de registradores em compiladores
title_full Estratégias de solução para o problema de alocação de registradores em compiladores
title_fullStr Estratégias de solução para o problema de alocação de registradores em compiladores
title_full_unstemmed Estratégias de solução para o problema de alocação de registradores em compiladores
title_sort Estratégias de solução para o problema de alocação de registradores em compiladores
author Shimosaka, Gabriel Hitoshi
author_facet Shimosaka, Gabriel Hitoshi
author_role author
dc.contributor.advisor1.fl_str_mv Barbosa, Marco Antonio de Castro
dc.contributor.referee1.fl_str_mv Barbosa, Marco Antonio de Castro
dc.contributor.referee2.fl_str_mv Casanova, Dalcimar
dc.contributor.referee3.fl_str_mv Denardin, Gustavo Weber
dc.contributor.author.fl_str_mv Shimosaka, Gabriel Hitoshi
contributor_str_mv Barbosa, Marco Antonio de Castro
Barbosa, Marco Antonio de Castro
Casanova, Dalcimar
Denardin, Gustavo Weber
dc.subject.cnpq.fl_str_mv CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::SISTEMAS DE COMPUTACAO
topic CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::SISTEMAS DE COMPUTACAO
Compiladores (Computadores)
Programação heurística
Grafos de ligação
Compiling (Electronic computers)
Heuristic programming
Bond graphs
dc.subject.por.fl_str_mv Compiladores (Computadores)
Programação heurística
Grafos de ligação
Compiling (Electronic computers)
Heuristic programming
Bond graphs
description O principal objetivo de um compilador é transformar o código de uma linguagem fonte em uma linguagem objeto. Para isso, o código gerado pelo compilador deve fazer uso efetivo dos recursos limitados do processador. Entre os recursos mais restritos, está o conjunto de registradores. Portanto, a alocação de registradores é uma etapa de extrema importância para o processo de compilação. Compiladores modernos geralmente abstraem esse problema como um problema de Coloração de Grafo, pois este tipo de abordagem captura alguns dos aspectos críticos da alocação. Porém, realizar esta coloração de forma ótima, ou seja, da melhor maneira possível, caracteriza-se como um problema NP-Completo. Como os algoritmos conhecidos que resolvem estes problemas de maneira exata possuem um comportamento de pior caso exponencial, as heurísticas são adotas. Elas são capazes de dar uma boa solução em um tempo aceitável. Com o desenvolvimento deste trabalho foi possível realizar um comparativo entre diferentes estratégias e implementar uma solução alternativa com resultados iguais ou superiores.
publishDate 2019
dc.date.issued.fl_str_mv 2019-12-12
dc.date.accessioned.fl_str_mv 2021-04-06T19:19:40Z
dc.date.available.fl_str_mv 2021-04-06T19:19:40Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/bachelorThesis
format bachelorThesis
status_str publishedVersion
dc.identifier.citation.fl_str_mv SHIMOSAKA, Gabriel Hitoshi. Estratégias de solução para o problema de alocação de registradores em compiladores. 2019. Trabalho de Conclusão de Curso (Engenharia de Computação) - Universidade Tecnológica Federal do Paraná (UTFPR), Pato Branco, 2019.
dc.identifier.uri.fl_str_mv http://repositorio.utfpr.edu.br/jspui/handle/1/24656
identifier_str_mv SHIMOSAKA, Gabriel Hitoshi. Estratégias de solução para o problema de alocação de registradores em compiladores. 2019. Trabalho de Conclusão de Curso (Engenharia de Computação) - Universidade Tecnológica Federal do Paraná (UTFPR), Pato Branco, 2019.
url http://repositorio.utfpr.edu.br/jspui/handle/1/24656
dc.language.iso.fl_str_mv por
language por
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.publisher.none.fl_str_mv Universidade Tecnológica Federal do Paraná
Pato Branco
dc.publisher.program.fl_str_mv Engenharia de Computação
dc.publisher.initials.fl_str_mv UTFPR
dc.publisher.country.fl_str_mv Brasil
dc.publisher.department.fl_str_mv Departamento Acadêmico de Informática
publisher.none.fl_str_mv Universidade Tecnológica Federal do Paraná
Pato Branco
dc.source.none.fl_str_mv reponame:Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))
instname:Universidade Tecnológica Federal do Paraná (UTFPR)
instacron:UTFPR
instname_str Universidade Tecnológica Federal do Paraná (UTFPR)
instacron_str UTFPR
institution UTFPR
reponame_str Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))
collection Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT))
bitstream.url.fl_str_mv http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/24656/1/PB_COENC_2019_207.pdf
http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/24656/2/license.txt
http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/24656/3/PB_COENC_2019_207.pdf.txt
http://repositorio.utfpr.edu.br:8080/jspui/bitstream/1/24656/4/PB_COENC_2019_207.pdf.jpg
bitstream.checksum.fl_str_mv 587702ed8172887d33e61226ec42535f
b9d82215ab23456fa2d8b49c5df1b95b
d419957b81af2d41dc0d2754e7076068
9f293c653ef700583f178be6e5897796
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositório Institucional da UTFPR (da Universidade Tecnológica Federal do Paraná (RIUT)) - Universidade Tecnológica Federal do Paraná (UTFPR)
repository.mail.fl_str_mv
_version_ 1805923095107600384