Lenguajes compiladores

Anuncio
COMPILADORES II
Capítulo I: Análisis sintáctico y semántico
• Sea el atributo sintetizado val que da el valor del número binario generado por S en la siguiente gramática.
Por ejemplo, con la entrada 101.101 S.val = 5.625
S!L.L|L
L!LB|B
B!0|1
• Utilícense atributos sintetizados para determinar S.val.
• Supóngase que se tienen las siguientes declaraciones en C:
typedef struct{
int a, b;
}NODO, *APNODO;
NODO aa[100];
APNODO bb(int x, NODO y){
.
.
.
}
Escríbanse expresiones de tipo para los tipos aa y bb.
Capítulo II y III: Generación de código objeto y optimización de código objeto
• Genérese código para las siguientes proposiciones en C para la máquina objeto, suponiendo que todas las
variables son estáticas. Supóngase que hay tres registros disponibles.
• x = a[ i ] + 1
• a[ i ] = b[c[ i ] ]
• Considérese el programa para la multiplicación de matrices de la figura siguiente.
begin
for i:= 1 to n do
for j:= 1 to n do
1
c[i,j] := 0;
for i:= 1 to n do
for j:= 1 to n do
for k:= 1 to n do
c[i,j] := c[i,j] + a[i,k]* b[k,j]
end
Suponiendo que a a, b y c se les ha asignado memoria estática y que hay cuatro bytes por palabra en una
memoria direccionada por bytes, prodúzcase proposiciones de tres direcciones par el programa de la figura.
• El programa de la figura siguiente, cuenta números primos desde 2 a n utilizando el método de la criba
sobre una matriz debidamente grande.
begin
read n;
for i:= 2 to n do
a[i]:= true;
cuenta := 0
for i:= 2 to n** .5 do
if a[i] then
begin
cuenta := cuenta + 1;
for j:= 2*i to n by i do
a[j] := false;
end
print cuenta;
end
tradúzcase el programa a proposiciones de tres direcciones suponiendo que a tiene asignada memoria estática.
2
Descargar