Computação Múltipla Escolha

Com a popularização das arquiteturas RISC (Reduced Instruction Set Computer) nas décadas de 1980 e 1990, tornou-se necessário utilizar uma Representação Intermediária (IR) que refletisse operações simples, sem dependência de acumuladores e com três operandos — dois de entrada e um de saída — facilitando otimizações e geração de código eficiente. Qual tipo de representação intermediária atende a essas características?

Com a popularização das arquiteturas RISC (Reduced Instruction Set Computer) nas décadas de 1980 e 1990, tornou-se necessário utilizar uma Representação Intermediária (IR) que refletisse operações simples, sem dependência de acumuladores e com três operandos — dois de entrada e um de saída — facilitando otimizações e geração de código eficiente. Qual tipo de representação intermediária atende a essas características?

  1. Código de microinstruções, que descreve operações internas da CPU.
  2. Código de um endereço, pois é compacto e usa uma pilha de operandos.
  3. Código de máquina de pilha, por eliminar todos os nomes e permitir o reuso imediato da memória.
  4. Código de dois endereços, que simplifica a codificação de operações destrutivas.
  5. Código de três endereços, pois representa bem o modelo de duas entradas e uma saída típico do RISC.

Resolução completa

Explicação passo a passo

E
Alternativa E

Alternativa E - Código de três endereços, pois representa bem o modelo de duas entradas e uma saída típico do RISC.

Análise da Questão

A questão aborda a escolha da Representação Intermediária (IR) em compiladores, especificamente no contexto das arquiteturas RISC (Reduced Instruction Set Computer). O enunciado fornece características cruciais para identificar o tipo correto de código intermediário.

Características Identificadas no Enunciado:

Para encontrar a resposta correta, devemos cruzar os dados fornecidos com a teoria de compiladores:

  • Operações Simples: As instruções não devem ser complexas.
  • Sem dependência de acumuladores: Não deve haver um registrador implícito que armazene resultados parciais obrigatoriamente.
  • Três Operandos: Explicitamente mencionado como "dois de entrada e um de saída".
  • Objetivo: Facilitar otimizações e geração de código eficiente.

Por que a Alternativa E é a Correta?

O termo técnico para uma representação onde cada instrução possui explicitamente até três operandos (destino, fonte 1 e fonte 2) é Código de Três Endereços (Three-Address Code - TAC).

  • Formato Típico: Uma instrução segue a lógica matemática A = B \text{ op } C, onde:
  • A é a saída (um endereço/registrador).
  • B e C são as entradas (dois endereços/registradores).
  • Compatibilidade com RISC: Arquiteturas RISC operam predominantemente sobre registradores. O uso de três endereços mapeia diretamente para operações registrador-a-registrador sem necessidade de manipulação excessiva de memória ou acumuladores ocultos.

Por que as outras alternativas estão incorretas?

Embora a imagem mostre a opção "Código de um endereço" selecionada, essa marcação está incorreta baseada na descrição técnica fornecida. Veja a comparação:

Tipo de CódigoOperadoresCaracterística Principal
Zero Endereço0 (Implícitos)Uso de Pilha (Stack). Ex: Java Bytecode.
Um Endereço1 (Explícito)Uso de Acumulador implícito.
Dois Endereços2Destino e Fonte (A = A + B).
Três Endereços3Fonte 1, Fonte 2, Destino (A = B + C).
  • Alternativa B (Selecionada na imagem): Fala em "código de um endereço" e "pilha de operandos". Isso descreve máquinas baseadas em pilha (zero-endereço), o que contradiz a exigência explícita de "três operandos" citada no texto.
  • Alternativa D (Dois endereços): Simplifica a codificação, mas geralmente implica que o destino é uma das fontes, não sendo tão flexível para otimização quanto o de três endereços.

Conclusão

O enunciado define classicamente o Código de Três Endereços ao mencionar "dois de entrada e um de saída". Portanto, a alternativa correta é a E, independentemente da marcação visual na imagem apresentada.

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Computação

Ver mais Computação resolvidas

Tem outra questão de Computação?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.