Logo Passei Direto
Buscar

Síntese de código - Compiladores - Exercícios

User badge image
robson.gm

em

Ferramentas de estudo

Questões resolvidas

Basicamente, há duas fases de compiladores, e cada uma delas cria uma representação do código original mais próxima do código que a máquina consegue executar.
Considerando o momento em que a síntese é realizada e seus objetivos, assinale a alternativa correta.
A. A síntese é realizada após os procedimentos de análise léxica, sintática e semântica, e seu objetivo é permitir a geração do código de máquina.
B. A síntese é realizada após os procedimentos de análise léxica, sintática e semântica, e seu objetivo é permitir a geração do código de máquina.
C. Não se pode atribuir à síntese o objetivo de validar procedimentos anteriores.
D. Sempre haverá a garantia de que os procedimentos de análise léxica, sintática e semântica entregarão um código livre de erros ao procedimento de síntese.
E. Não se pode também associar a síntese com a mera otimização do código.

As linguagens intermediárias geradas pelo compilador podem estar em níveis diferentes de abstrações.
Tomando como referência o conceito e os objetivos de uma representação de código intermediário em baixo nível de abstração, julgue as afirmativas a seguir em verdadeiras (V) ou falsas (F):
( ) A representação de baixo nível é a mais distante do código a ser executado pelo processador, pois ainda precisa ser otimizada.
( ) As instruções contidas nesse nível de representação devem ser aquelas próprias do processador para o qual o código está sendo gerado.
( ) O compilador fará a geração do código em baixo nível de abstração apenas para casos em que o código-fonte for escrito em linguagem Assembly.
A. V – F – V.
B. F – V – F.

Os bytecodes são as instruções de um processador virtual que podem ser codificadas em um único byte por um ambiente denominado 'máquina virtual Java', ou JVM, utilizando um interpretador.
Considerando características da JVM, analise as afirmacoes que seguem:
I. Os bytecodes gerados pela JVM são totalmente dependentes do hardware e do sistema operacional que executarão as instruções.
II. A JVM é uma linguagem intermediária de alto nível que dispõe de instruções para operações complexas, como chamar métodos virtuais e criar objetos.
III. Um compilador da linguagem Java é capaz de gerar arquivos constituídos por bytecodes, que são criados com a extensão .class.
A. I e II.
B. I e III.
C. II e III.
D. II e III.

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Questões resolvidas

Basicamente, há duas fases de compiladores, e cada uma delas cria uma representação do código original mais próxima do código que a máquina consegue executar.
Considerando o momento em que a síntese é realizada e seus objetivos, assinale a alternativa correta.
A. A síntese é realizada após os procedimentos de análise léxica, sintática e semântica, e seu objetivo é permitir a geração do código de máquina.
B. A síntese é realizada após os procedimentos de análise léxica, sintática e semântica, e seu objetivo é permitir a geração do código de máquina.
C. Não se pode atribuir à síntese o objetivo de validar procedimentos anteriores.
D. Sempre haverá a garantia de que os procedimentos de análise léxica, sintática e semântica entregarão um código livre de erros ao procedimento de síntese.
E. Não se pode também associar a síntese com a mera otimização do código.

As linguagens intermediárias geradas pelo compilador podem estar em níveis diferentes de abstrações.
Tomando como referência o conceito e os objetivos de uma representação de código intermediário em baixo nível de abstração, julgue as afirmativas a seguir em verdadeiras (V) ou falsas (F):
( ) A representação de baixo nível é a mais distante do código a ser executado pelo processador, pois ainda precisa ser otimizada.
( ) As instruções contidas nesse nível de representação devem ser aquelas próprias do processador para o qual o código está sendo gerado.
( ) O compilador fará a geração do código em baixo nível de abstração apenas para casos em que o código-fonte for escrito em linguagem Assembly.
A. V – F – V.
B. F – V – F.

Os bytecodes são as instruções de um processador virtual que podem ser codificadas em um único byte por um ambiente denominado 'máquina virtual Java', ou JVM, utilizando um interpretador.
Considerando características da JVM, analise as afirmacoes que seguem:
I. Os bytecodes gerados pela JVM são totalmente dependentes do hardware e do sistema operacional que executarão as instruções.
II. A JVM é uma linguagem intermediária de alto nível que dispõe de instruções para operações complexas, como chamar métodos virtuais e criar objetos.
III. Um compilador da linguagem Java é capaz de gerar arquivos constituídos por bytecodes, que são criados com a extensão .class.
A. I e II.
B. I e III.
C. II e III.
D. II e III.

Prévia do material em texto

Síntese de código - Compiladores
Exercícios
1. Basicamente, há duas fases de compiladores, e cada uma delas cria uma
representação do código original mais próxima do código que a máquina consegue
executar.
Considerando o momento em que a síntese é realizada e seus objetivos, assinale a
alternativa correta.
Você acertou!
B. A síntese é realizada após os procedimentos de análise léxica, sintática e semântica, e
seu objetivo é permitir a geração do código de máquina.
A síntese é realizada após os procedimentos de análise léxica, sintática e
semântica, e seu objetivo é permitir a geração do código de máquina.
Não   se   pode   atribuir   à   síntese   o  objetivo   de   validar   procedimentos   anteriores.
Sempre haverá a garantia de que os procedimentos de análise léxica, sintática e
semântica entregarão um código livre de erros ao procedimento de síntese. Não
se   pode   também   associar   a   síntese   com   a   mera   otimização   do   código.   Pelo
sequenciamento estabelecido pelo compilador, não se pode posicionar a síntese
durante ou antes dos procedimentos de análise.
2. A utilidade de um código intermediário entre as linguagens de alto nível e de
baixo nível não se resume à simplificação das tarefas envolvidas no processo de
compilação. Além dessa simplificação, o uso de um código intermediário apresenta
outras vantagens.
Considerando a finalidade da geração de um código intermediário, analise os itens
que seguem:
I. Flexibilização dos procedimentos de análise do código.
II. Aumento do número de compiladores necessários para máquinas diferentes.
III. Independência dos detalhes sintáticos da linguagem original.
É correto o que se afirma em:
Você acertou!
A. apenas III.
O item I não é correto. A criação de um código intermediário entre o original e o
código-objeto   acarreta   flexibilidade   ao   processo   de   compilação,   mas   não
exatamente aos procedimentos de análise.
O item II também não é correto, já que a geração de código intermediário visa à
diminuição do número de compiladores necessários para máquinas diferentes.
Por fim, o item III é correto,  já que expressa a desvinculação dos detalhes da
linguagem original no processo de geração do código final.
3. As linguagens intermediárias geradas pelo compilador podem estar em níveis
diferentes de abstrações.
Tomando como referência o conceito e os objetivos de uma representação de
código intermediário em baixo nível de abstração, julgue as afirmativas a seguir
em verdadeiras (V) ou falsas (F):
( ) A representação de baixo nível é a mais distante do código a ser executado pelo
processador, pois ainda precisa ser otimizada.
( ) As instruções contidas nesse nível de representação devem ser aquelas
próprias do processador para o qual o código está sendo gerado.
( ) O compilador fará a geração do código em baixo nível de abstração apenas para
casos em que o código-fonte for escrito em linguagem Assembly.
Assinale a alternativa que contém a sequência correta de V e F.
Você acertou!
B. F – V – F.
A primeira afirmação é falsa, pois a representação em baixo nível de abstração é
a mais próxima da linguagem que o compilador poderá executar.
A segunda afirmação é verdadeira, pois será por meio dessa linguagem que o
compilador   poderá   executar   com   seu   próprio   conjunto   de   instruções   o   código
traduzido.
Por   fim, a terceira afirmação também é falsa,   pois   a   geração   desse   tipo   de
código independe da linguagem em que o programa-fonte foi escrito.
4. Considerando elementos relacionados à geração de código de máquina, assinale
a alternativa que contém os termos que preenchem corretamente as lacunas da
sentença que segue:
A geração do código de máquina a partir do código __________________ é feita
com mais _________________ a partir da tradução exata de uma instrução do
primeiro tipo de código para a instrução correspondente do segundo código,
embora possa haver instruções em uma linguagem que sejam capazes de executar
________________ instruções da outra.
Resposta correta.
D. intermediário / facilidade / múltiplas.
A   solução   mais   simples   para   gerar   código   de   máquina   a   partir   de
código intermediário é traduzir cada instrução do código intermediário para uma
ou mais  instruções de código de máquina,  embora muitas vezes seja  possível
encontrar   uma   instrução   de   código   de   máquina   que cubra duas ou mais
instruções de linguagem intermediária. Essa correspondência exata de “um para
um” também falha nas formas possíveis de se gerar um código de máquina, pois
não existe apenas uma maneira de obtê-lo, e, além disso, não existe um único
objetivo   no   qual   a   geração   de   código   se  apoia.   Portanto,   a   alternativa   correta
é: intermediário / facilidade / múltiplas.
5. Os bytecodes são as instruções de um processador virtual que podem ser
codificadas em um único byte por um ambiente denominado "máquina virtual
Java", ou JVM, utilizando um interpretador.
Considerando características da JVM, analise as afirmações que seguem:
I. Os bytecodes gerados pela JVM são totalmente dependentes do hardware e do
sistema operacional que executarão as instruções.
II. A JVM é uma linguagem intermediária de alto nível que dispõe de instruções para
operações complexas, como chamar métodos virtuais e criar objetos.
III. Um compilador da linguagem Java é capaz de gerar arquivos constituídos
por bytecodes, que são criados com a extensão .class.
É verdadeiro o que se afirma em:
Você acertou!
D. II e III.
A afirmativa I é falsa, já   que   os bytecodes não   dependem   de   plataforma
específica para serem executados.
A afirmativa II é verdadeira. De   fato,   a   caracterização   da   JVM   é   feita
corretamente nesta afirmativa.
A afirmativa III é verdadeira. Um   arquivo   de bytecodes contém,   de   fato,   a
extensão .class.
	Síntese de código - Compiladores
	Exercícios

Mais conteúdos dessa disciplina