Desvantagens da forma intermediária funcional


16

Estou escrevendo um otimizador para uma linguagem semelhante ao JavaScript e preciso escolher uma representação de código intermediária. A escolha óbvia / típica atualmente é a atribuição única estática (SSA).

No entanto, a Implementação do Compilador Moderno em C também discute a forma intermediária funcional, que basicamente significa tornar-se funcional pura para a representação intermediária (pura em termos apenas de variáveis ​​locais, os dados de heap ainda são mutáveis, e não o CPS, apenas letblocos simples e chamadas finais) e tem algumas vantagens em termos de facilidade de raciocínio.

Presumivelmente, não é um acéfalo ou todo mundo já estaria usando essa representação, então minha pergunta é: quais desvantagens a forma intermediária funcional tem em comparação com a SSA?


3
Que tipo de análise você fará sobre essa forma intermediária? O SSA é ótimo para eliminação de código morto, propagação constante, especialização parcial e outros. Se esse tipo de coisa não estiver no seu menu, você pode pular o SSA e usar uma representação mais descontraída para obter análises mais simples. Porém, gerar um formulário SSA é uma tarefa bastante trivial e você pode facilmente converter o SSA em CPS (e vice-versa), o que dobra os benefícios.
SK-logic,

Sim, estou buscando o monty completo, e o idioma de entrada e o formato de saída (inicialmente C ++) são linguagens imperativas.
precisa saber é o seguinte

Gerar um formulário SSA é uma tarefa bastante trivial, e você pode facilmente converter o SSA em CPS, além de converter o CPS em SSA, o que dobra os benefícios.
Leon Alexis Cardinal

Respostas:


1

O SSA é ótimo para eliminação de código morto, propagação constante, especialização parcial e outros. Se esse tipo de coisa não estiver no seu menu, você pode pular o SSA e usar uma representação mais descontraída para passar por análises mais simples

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.