Buscar

UNIVESP - 2022 - Linguagens e Compiladores - S7 - Apoio1

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

Revisar envio do teste: Exercício de apoio - Semana 7
Linguagens e Compiladores - EEL101 - Turma 001 Semana 7
Revisar envio do teste: Exercício de apoio - Semana 7 
Pergunta 1
Resposta Selecionada: 
Respostas:
 
Comentário da resposta:
Qual é o código gerado? Considere que a árvore está correta para a expressão
“a:=x*y+z”.
 
T1 := x * y || T2 := T1 + z || a := T2
a := T1 + z || T1 := x * y
T1 := x * y || T2 := T1 + z || a := T2
T2 := x * y || T1 := T2 + z || a := T2
a := T2 || T1 := x * y || T2 := T1 + z
a := x * y
A resposta correta é: T1 := x * y || T2 := T1 + z || a := T2
Pergunta 2
Resposta
Selecionada:
Respostas:
Comentário da resposta:
Qual código completaria o esquema de tradução para gerar código corretamente?
 
E.nome := geratemp; E.cod = E1.cod || T.cod || geracod(E.nome
“:=” E1.nome “+” T.nome)
E.nome := geratemp; T.cod || geracod(E.nome “:=” E1.nome “+”
T.nome)
E.nome := E1.nome; E.cod = E1.cod || T.cod || geracod(E.nome
“:=” E1.nome “+” T.nome)
E.nome := E1.nome; E.cod = E1.cod || geracod(E.nome “:=”
E1.nome “+” T.nome)
E.nome := geratemp; E.cod = E1.cod || T.cod || geracod(E.nome
“:=” E1.nome “+” T.nome)
E.nome := geratemp; E.cod = E1.cod || T.cod || geracod(E.nome
“:=” T.nome)
E.nome := geratemp; E.cod = E1.cod || T.cod || 
geracod(E.nome “:=” E1.nome “+” T.nome)
https://ava.univesp.br/webapps/blackboard/execute/courseMain?course_id=_7263_1
https://ava.univesp.br/webapps/blackboard/content/listContent.jsp?course_id=_7263_1&content_id=_941482_1&mode=reset
Pergunta 3
Resposta Selecionada: 
Respostas:
 
Comentário da
resposta:
Se a expressão encontrada no código fonte fosse “a:=x*y+z*r”, qual seria o código
gerado? Considere a árvore anterior e a complete para responder a essa questão.
 
T1 := x * y || T2 := z * r || T3 := T1 + T2 || a := T3
T1 := x * y || T2 := T1 + r || T3 := T2 * z || a := T2
T1 := x * y || T2 := z * r || a := T2
T1 := x * y || T2 := T1 + z || T3 := T2 * r || a := T1
T1 := x * y || T2 := z * r || a := T1
T1 := x * y || T2 := z * r || T3 := T1 + T2 || a := T3
A resposta correta é: T1 := x * y || T2 := z * r || T3 := T1 + T2
|| a := T3
Pergunta 4
Resposta
Selecionada:
 
Respostas:
 
Comentário da resposta:
Se o código de três endereços empregado no esquema de tradução fosse
substituído pelo código objeto da JVM (para valores inteiros), quais mudanças
precisariam ser feitas no código do esquema de tradução para a geração da adição
(E → E1 + T)? Considere que as variáveis estão organizadas na ordem em que
aparecem da esquerda para a direita, assim a variável para “E” está indexada como
0, as demais, em ordem crescente. Considere também que o resultado de cada sub-
expressão é deixado no topo da pilha.
 
E.cod = E1.cod || T.cod || geracod(iadd || istore 0)
iconst_0 || istore 0 || ipush 0 || E.cod = E1.cod || T.cod ||
geracod(dadd || istore 0)
E.cod = E1.cod || T.cod || geracod(iadd || istore 0)
E.cod = E1.cod || iload 2 || T.cod || iload 3 || geracod(iadd || istore
1)
E.cod = E1.cod || T.cod || geracod(iadd || istore 2)
E.cod = E1.cod || istore 2 || T.cod || istore 3 geracod(ipush 2 ||
ipush 3 || ladd || istore 1)
A resposta correta é:
E.cod = E1.cod || T.cod || 
geracod(iadd || istore 0)
Pergunta 5
Segunda-feira, 21 de Novembro de 2022 16h18min23s BRT
Resposta
Selecionada:
Respostas:
Comentário da
resposta:
Considerando o código gerado para a expressão da questão 1, há alguma
otimização evidente? Há alguma forma simples de melhorar o código gerado?
 
Há, uma delas é na função geratemp que não reutiliza
temporários.
Não há, porque a única melhoria possível envolve processar
todo o código gerado.
Há, basta trocar a ordem dos operandos.
Não há, somente aplicando alguma otimização como “peephole”.
Há, uma delas é na função geratemp que não reutiliza
temporários.
Não há, porque as oportunidades simples foram aplicadas.
A resposta correta é: Há, uma delas é na função geratemp que
não reutiliza temporários.
← OK

Mais conteúdos dessa disciplina