Avaliação de otimizações de código intermediário para uma máquina de pilha

Detalhes bibliográficos
Autor(a) principal: Guidotti, Tito Ribeiro de Almeida
Data de Publicação: 2025
Tipo de documento: Trabalho de conclusão de curso
Idioma: por
Título da fonte: Repositório Digital do Mackenzie
Texto Completo: https://dspace.mackenzie.br/handle/10899/41003
Resumo: Indicado da publicação.
id UPM_8b55e020d50d7c891e3cc8fb700aabc1
oai_identifier_str oai:dspace.mackenzie.br:10899/41003
network_acronym_str UPM
network_name_str Repositório Digital do Mackenzie
repository_id_str 10277
spelling Guidotti, Tito Ribeiro de AlmeidaLubacheski, Fabio Aparecido Gamarra2025-07-02T19:19:36Z2025-07-02T19:19:36Z2025-06-14https://dspace.mackenzie.br/handle/10899/41003Indicado da publicação.Por conta da diversidade de linguagens de programação e arquiteturas de máquina,o desenvolvimento de compiladores dedicados para cada combinação de linguagem e arquitetura tornou-se uma tarefa onerosa. Por conta disso alguns compiladores fazem uso de linguagens intermediárias que permitem uma abstração do código, facilitando a sua tradução para diversas arquiteturas. Durante a compilação de um código-fonte, é possível otimizar o resultado através de uma série de transformações automatizadas que visam melhorar características da sua execução. Realizar essas transformações diretamente na linguagem intermediária é vantajoso por conta de generalidade e compatibilidade. Para avaliar a efetividade de otimizações no código intermediário, foi proposto um otimizador para uma linguagem intermediária didática que faz uso de uma arquitetura de pilha, a MEPA. Este otimizador implementa otimização de fluxo, eliminação de cópia de constantes, eliminação de código morto e eliminação de variáveis mortas. Para analisar a sua saída, foi desenvolvida uma máquina virtual para execução de MEPA; para avaliar a sua eficácia, foi projetada uma linguagem de programação e compilador que produz código MEPA. Com ele, foi feito um banco de programas que, otimizados, tiveram em média uma redução de 12% no número de instruções, 20% no uso de memória e 9% nas etapas de execução.Due to the diversity of programming languages and machine architectures, developing dedicated compilers for each combination of language and architecture has become a costly task. As a result, some compilers make use of intermediate languages that allow for code abstraction, making translation to various architectures easier. During the compilation of source code, it is possible to optimize the result through a series of automated transformations aimed at improving execution characteristics. Performing these transformations directly in the intermediate language is advantageous due to its generality and compatibility. To evaluate the effectiveness of optimizations in the intermediate code, an optimizer was proposed for a didactic intermediate language that uses a stack-based architecture, MEPA. This optimizer implements flow optimization, constant copy elimination, dead code elimination, and dead variable elimination. To analyze its output, a virtual machine was developed for executing MEPA; to evaluate its effectiveness, a programming language and compiler were designed to produce MEPA code. Using this setup, a set of programs was created which, after optimization, showed an average reduction of 12% in the number of instructions, 20% in memory usage, and 9% in execution steps.Universidade Presbiteriana Mackenzielinguagem intermediáriaarquitetura de pilhaotimizador de códigointermediate languagestack-based architecturecode optimizer.Avaliação de otimizações de código intermediário para uma máquina de pilhainfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/bachelorThesisporreponame:Repositório Digital do Mackenzieinstname:Universidade Presbiteriana Mackenzie (MACKENZIE)instacron:MACKENZIEinfo:eu-repo/semantics/openAccessFaculdade de Computação e Informática (FCI)ORIGINALTito Ribeiro de Almeida Guidotti.pdfTito Ribeiro de Almeida Guidotti.pdfapplication/pdf705341https://dspace.mackenzie.br/bitstreams/78ab9d45-61c8-486b-8cd2-58782bf9f912/download64a11b57f69e6ebd6505073ad379ee20MD51trueAnonymousREADLICENSElicense.txtlicense.txttext/plain; charset=utf-82269https://dspace.mackenzie.br/bitstreams/9870ba9e-e263-4b8b-bed7-7e205fb8ecdf/downloadf0d4931322d30f6d2ee9ebafdf037c16MD52falseAnonymousREADTEXTTito Ribeiro de Almeida Guidotti.pdf.txtTito Ribeiro de Almeida Guidotti.pdf.txtExtracted texttext/plain44383https://dspace.mackenzie.br/bitstreams/73162c3a-6c29-4dde-bc3e-ac786656d5ca/download9da4a452f6015ecd0a55db40c284447eMD53falseAnonymousREADTHUMBNAILTito Ribeiro de Almeida Guidotti.pdf.jpgTito Ribeiro de Almeida Guidotti.pdf.jpgGenerated Thumbnailimage/jpeg3536https://dspace.mackenzie.br/bitstreams/098b6f51-4128-47d2-98aa-361cf0e08e1b/download085f6761e2fac0f83d6185328e0b9263MD54falseAnonymousREAD10899/410032025-07-03T06:01:39.934Zopen.accessoai:dspace.mackenzie.br:10899/41003https://dspace.mackenzie.brBiblioteca Digital de Teses e Dissertaçõeshttp://tede.mackenzie.br/jspui/PRIhttps://adelpha-api.mackenzie.br/server/oai/repositorio@mackenzie.br||paola.damato@mackenzie.bropendoar:102772025-07-03T06:01:39Repositório Digital do Mackenzie - Universidade Presbiteriana Mackenzie (MACKENZIE)falseTElDRU7Dh0EgREUgRElTVFJJQlVJw4fDg08gTsODTy1FWENMVVNJVkEKPGJyPjxicj4KQ29tIG8gYWNlaXRlIGRlc3RhIGxpY2Vuw6dhLCB2b2PDqiAobyBhdXRvciAoZXMpIG91IG8gdGl0dWxhciBkb3MgZGlyZWl0b3MgZGUgYXV0b3IpIGNvbmNlZGUgw6AgVW5pdmVyc2lkYWRlIFByZXNiaXRlcmlhbmEgTWFja2VuemllIG8gZGlyZWl0byBuw6NvLWV4Y2x1c2l2byBkZSByZXByb2R1emlyLCB0cmFkdXppciAoY29uZm9ybWUgZGVmaW5pZG8gYWJhaXhvKSwgZS9vdSBkaXN0cmlidWlyIHNldSB0cmFiYWxobyAoaW5jbHVpbmRvIG8gcmVzdW1vKSBwb3IgdG9kbyBvIG11bmRvIG5vIGZvcm1hdG8gaW1wcmVzc28gZSBlbGV0csO0bmljbyBlIGVtIHF1YWxxdWVyIG1laW8sIGluY2x1aW5kbyBvcyBmb3JtYXRvcyDDoXVkaW8gb3UgdsOtZGVvLgo8YnI+PGJyPgpBY2VpdGFuZG8gZXNzYSBsaWNlbsOnYSB2b2PDqiBjb25jb3JkYSBxdWUgYSBVbml2ZXJzaWRhZGUgUHJlc2JpdGVyaWFuYSBNYWNrZW56aWUgcG9kZSwgc2VtIGFsdGVyYXIgbyBjb250ZcO6ZG8sIHRyYW5zcG9yIG8gc2V1IHRyYWJhbGhvIHBhcmEgcXVhbHF1ZXIgbWVpbyBvdSBmb3JtYXRvIGUgbWFudGVyIG1haXMgZGUgdW1hIGPDs3BpYSBkbyBzZXUgdHJhYmFsaG8gcGFyYSBmaW5zIGRlIHNlZ3VyYW7Dp2EsIGJhY2stdXAgZSBwcmVzZXJ2YcOnw6NvLgo8YnI+PGJyPgpDb25jb3JkYXLDoSBxdWUgc2V1IHRyYWJhbGhvIHRhbWLDqW0gc2Vyw6EgcmVnaWRvIHBlbGEgQ3JlYXRpdmUgQ29tbW9ucyBxdWUgTsODTyBwZXJtaXRlIG8gdXNvIGNvbWVyY2lhbCBvdSBxdWFscXVlciBhbHRlcmHDp8OjbyBkYSBvYnJhIHBvciB0ZXJjZWlyb3MgY29uZm9ybWUgZGVzY3JpdG8gZW0gPGEgaHJlZj0iaHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5jLW5kLzQuMC8iIHRhcmdldD0iX2JsYW5rIj5odHRwczovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktbmMtbmQvNC4wLzwvYT4uCjxicj48YnI+ClZvY8OqIGRlY2xhcmEgcXVlIHNldSB0cmFiYWxobyDDqSBvcmlnaW5hbCBlIHF1ZSB2b2PDqiB0ZW0gbyBwb2RlciBkZSBjb25jZWRlciBvcyBkaXJlaXRvcyBjb250aWRvcyBuZXN0YSBsaWNlbsOnYS4gRGVjbGFyYSB0YW1iw6ltIHF1ZSBvIGRlcMOzc2l0byBkbyBzZXUgdHJhYmFsaG8gbsOjbywgcXVlIHNlamEgZGUgc2V1IGNvbmhlY2ltZW50bywgaW5mcmluZ2UgZGlyZWl0b3MgYXV0b3JhaXMgZGUgbmluZ3XDqW0uCjxicj48YnI+CkNhc28gbyBzZXUgdHJhYmFsaG8gY29udGVuaGEgbWF0ZXJpYWwgcXVlIHZvY8OqIG7Do28gcG9zc3VpIGEgdGl0dWxhcmlkYWRlIGRvcyBkaXJlaXRvcyBhdXRvcmFpcywgdm9jw6ogZGVjbGFyYSBxdWUgb2J0ZXZlIGEgcGVybWlzc8OjbyBpcnJlc3RyaXRhIGRvIGRldGVudG9yIGRvcyBkaXJlaXRvcyBhdXRvcmFpcyBwYXJhIGNvbmNlZGVyIMOgIFVuaXZlcnNpZGFkZSBQcmVzYml0ZXJpYW5hIE1hY2tlbnppZSBvcyBkaXJlaXRvcyBhcHJlc2VudGFkb3MgbmVzdGEgbGljZW7Dp2EsIGUgcXVlIGVzc2UgbWF0ZXJpYWwgZGUgcHJvcHJpZWRhZGUgZGUgdGVyY2Vpcm9zIGVzdMOhIGNsYXJhbWVudGUgaWRlbnRpZmljYWRvIGUgcmVjb25oZWNpZG8gbm8gdGV4dG8gb3Ugbm8gY29udGXDumRvIGRvIHNldSB0cmFiYWxobyBvcmEgZGVwb3NpdGFkby4KPGJyPjxicj4KQ0FTTyBPIFRSQUJBTEhPIE9SQSBERVBPU0lUQURPIFRFTkhBIFNJRE8gUkVTVUxUQURPIERFIFVNIFBBVFJPQ8ONTklPIE9VIEFQT0lPIERFIFVNQSBBR8OKTkNJQSBERSBGT01FTlRPIE9VIE9VVFJPIE9SR0FOSVNNTyBRVUUgTsODTyBTRUpBIEEgVU5JVkVSU0lEQURFIFBSRVNCSVRFUklBTkEgTUFDS0VOWklFLCBWT0PDiiBERUNMQVJBIFFVRSBSRVNQRUlUT1UgVE9ET1MgRSBRVUFJU1FVRVIgRElSRUlUT1MgREUgUkVWSVPDg08gQ09NTyBUQU1Cw4lNIEFTIERFTUFJUyBPQlJJR0HDh8OVRVMgRVhJR0lEQVMgUE9SIENPTlRSQVRPIE9VIEFDT1JETy4KPGJyPjxicj4KQSBVbml2ZXJzaWRhZGUgUHJlc2JpdGVyaWFuYSBNYWNrZW56aWUgc2UgY29tcHJvbWV0ZSBhIGlkZW50aWZpY2FyIGNsYXJhbWVudGUgbyBzZXUgbm9tZSAocykgb3UgbyhzKSBub21lKHMpIGRvKHMpIGRldGVudG9yKGVzKSBkb3MgZGlyZWl0b3MgYXV0b3JhaXMgZG8gc2V1IHRyYWJhbGhvLCBlIG7Do28gZmFyw6EgcXVhbHF1ZXIgYWx0ZXJhw6fDo28sIGFsw6ltIGRhcXVlbGFzIGNvbmNlZGlkYXMgcG9yIGVzdGEgbGljZW7Dp2EuCg==
dc.title.none.fl_str_mv Avaliação de otimizações de código intermediário para uma máquina de pilha
title Avaliação de otimizações de código intermediário para uma máquina de pilha
spellingShingle Avaliação de otimizações de código intermediário para uma máquina de pilha
Guidotti, Tito Ribeiro de Almeida
linguagem intermediária
arquitetura de pilha
otimizador de código
intermediate language
stack-based architecture
code optimizer.
title_short Avaliação de otimizações de código intermediário para uma máquina de pilha
title_full Avaliação de otimizações de código intermediário para uma máquina de pilha
title_fullStr Avaliação de otimizações de código intermediário para uma máquina de pilha
title_full_unstemmed Avaliação de otimizações de código intermediário para uma máquina de pilha
title_sort Avaliação de otimizações de código intermediário para uma máquina de pilha
author Guidotti, Tito Ribeiro de Almeida
author_facet Guidotti, Tito Ribeiro de Almeida
author_role author
dc.contributor.author.fl_str_mv Guidotti, Tito Ribeiro de Almeida
dc.contributor.advisor1.fl_str_mv Lubacheski, Fabio Aparecido Gamarra
contributor_str_mv Lubacheski, Fabio Aparecido Gamarra
dc.subject.por.fl_str_mv linguagem intermediária
arquitetura de pilha
otimizador de código
intermediate language
stack-based architecture
code optimizer.
topic linguagem intermediária
arquitetura de pilha
otimizador de código
intermediate language
stack-based architecture
code optimizer.
description Indicado da publicação.
publishDate 2025
dc.date.accessioned.fl_str_mv 2025-07-02T19:19:36Z
dc.date.available.fl_str_mv 2025-07-02T19:19:36Z
dc.date.issued.fl_str_mv 2025-06-14
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.uri.fl_str_mv https://dspace.mackenzie.br/handle/10899/41003
url https://dspace.mackenzie.br/handle/10899/41003
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 Presbiteriana Mackenzie
publisher.none.fl_str_mv Universidade Presbiteriana Mackenzie
dc.source.none.fl_str_mv reponame:Repositório Digital do Mackenzie
instname:Universidade Presbiteriana Mackenzie (MACKENZIE)
instacron:MACKENZIE
instname_str Universidade Presbiteriana Mackenzie (MACKENZIE)
instacron_str MACKENZIE
institution MACKENZIE
reponame_str Repositório Digital do Mackenzie
collection Repositório Digital do Mackenzie
bitstream.url.fl_str_mv https://dspace.mackenzie.br/bitstreams/78ab9d45-61c8-486b-8cd2-58782bf9f912/download
https://dspace.mackenzie.br/bitstreams/9870ba9e-e263-4b8b-bed7-7e205fb8ecdf/download
https://dspace.mackenzie.br/bitstreams/73162c3a-6c29-4dde-bc3e-ac786656d5ca/download
https://dspace.mackenzie.br/bitstreams/098b6f51-4128-47d2-98aa-361cf0e08e1b/download
bitstream.checksum.fl_str_mv 64a11b57f69e6ebd6505073ad379ee20
f0d4931322d30f6d2ee9ebafdf037c16
9da4a452f6015ecd0a55db40c284447e
085f6761e2fac0f83d6185328e0b9263
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositório Digital do Mackenzie - Universidade Presbiteriana Mackenzie (MACKENZIE)
repository.mail.fl_str_mv repositorio@mackenzie.br||paola.damato@mackenzie.br
_version_ 1854950367417073664