View
229
Download
3
Category
Preview:
DESCRIPTION
proceso de traduccion
Citation preview
Diapositiva1
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva2
Frontend: dellenguaje dealtonivel allenguaje intermedio
Backend:dellenguajeintermedio alcdigo binario
Arquitecturasdetraduccin
2UTN - FRM - SSL: Proceso de traduccin
Cdigo
fuente?
Cdigo
binario
Cdigointermedio(ensamblador,pcode,bytecode,etc.)
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva3
Compilador
3
Anlisislexicogrfico
Anlisissintctico
Anlisissemntico
Optimizacin
Cdigofuente
Cdigotokenizado
rbolessintcticos
rbolesdecorados
Cdigointermedio Enlace(generadordecdigo)
Cdigodemquina
3UTN - FRM - SSL: Proceso de traduccin
G3.AEF.Tokenizacin
G2.AP.rboles
Formaleseinformales.Comportamientos.
Estticasydinmicas.
z:=(2*a*y+b)*(2*a*y+c)t:=2*a*y;z:=(t+b)*(t+c);
for(k=1;k
Diapositiva4
Traductores
Intrpreteensoftware:porejemploJVM Emuladordehardware: similaralanterior,peroimplementadoen
hardware Traductorbinario: instruccionesdelanuevaarquitecturaque
reproducenelcomportamientodelavieja Compiladornativo:compiladorescruzadosparaayudaracrearlos
4UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva5
Compiladornativo
Anlisislexicogrfico
Anlisissintctico
Anlisissemntico
Optimizacin
Enlace(linker)
tokens
rboles
intermedio
objeto
programa
Generacin de cdigo mquina
Cdigoobjeto(bibliotecasestticas)
Cdigoobjeto(bibliotecasdinmicas)
ejecutable
5UTN - FRM - SSL: Proceso de traduccin
TabladesmbolosNombreToken asociadoInformacindetipoAlcanceDireccinInicializacin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva6
Traductordeunpaso
Anlisislexicogrfico
Anlisissintctico Anlisissemntico
Tabladesmbolos
Generador
caracteres
cdigo objetoejecutable
errores
Facilidad de uso
Aplicaciones sencillas
Poca optimizacin
Traduccin rpida
Etapas de anlisis ygeneracin unificadas
Cdigo objeto ineficiente
Gestindeerrores
6UTN - FRM - SSL: Proceso de traduccin
U1
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva7
Intrpretepuro
Tabladesmbolos
Evaluadorinstrucciones
nmero
siguienteinstruccin
caracteres
etiqueta
resultado de laejecucinerrores
Nmerodeinstruccin
Facilidad de uso
Permiten interactuar con el estado del programa
Sin optimizacin
Analizan y ejecutanun enunciado por vez
Las instrucciones se Numeran o etiquetan
Requieren de un entorno para ejecutar
datos
Traductorarepresentacin
interna
instruccin
Gestindeerrores
7UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva8
Pseudocompiladorointrpreteparcial
Traductorcaracteres
resultado de la ejecucin
Cdigointermedio
datos
errores
Lenguajes modernos
Traducen a un pseudo-cdigo de mquina(por ej. P-code, byte-code, )
Multiplataforma
Intrprete por softwareo hardware
Requieren intrpretepara la ejecucin (VM),pero es muy pequeo
Cdigodemquina
Justintimecompiler
Intrprete
8UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva9
CompiladoreseIntrpretes
Preprocesador Analizador(lxicoysintctico)
Compilador
Cdigodemquina
Programafuente
rboldeanlisis
Cdigoensamblador
EnlazadorTraductor Intrprete Intrpreteparcial
Programa Bytecode
Compiladores e intrpretes tienen similares front-ends pero diferentes back-ends
9UTN - FRM - SSL: Proceso de traduccin
Entornodeejecucin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva10
Implementacinsemntica:asignacin
Asignacin Cambiodeestado
Modos Mltiple Entrada(input) Inicializacinvs.Asignacin
Conceptos Lvalue vs.Rvalue Enunciadovs.Operador
10UTN - FRM - SSL: Proceso de traduccin
A = C + 1 R-valueExpresin Constante
L-value VariableReferencia a memoriaNunca una expresin o constante
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva11
Implementacinsemntica:bifurcacin
Semntica Expresindecontrol
Formas Simple Doble Mltiple Selectordecasos
Opcindedescarte Bloque deenunciados Esquemasdeanidamiento Transferenciaincondicional
Rtulos
[evalua expresin y deja resultado en registro]JZR else[bloque verdad]JZR endelse:[bloque falso]end:[resto del programa]
11UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva12
Implementacinsemntica:iteracin
Semntica Expresin decontrol
Bloque deenunciados Esquemasdeanidamiento Ciclos
Modificacininternadeparmetros Cantidadindeterminada Evaluacininicialyfinal Cantidaddeterminada Valorinicialyfinal
top [evalua expresin y deja resultado en registro]JZR exit[bloque]JZR topexit:[resto del programa]
12UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva13
Implementacin
Direccionesdememoria
Abstraccinmediantevariables
Descriptores
(conjuntodeatributos)
Estticos
nombre
tipo
direccin
valor
tiempodevida
alcance
Dinmicos
tipo
direccin
valor
tiempodevida
alcance
Almacenamientobinario
Formatos
Semnticadedatos
13UTN - FRM - SSL: Proceso de traduccin
Dato
DescriptoryDato DatoDescriptor
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva14
Declaracindevariables
14UTN - FRM - SSL: Proceso de traduccin
SeaintA;A=21;
Modeloimperativo:generatresobjetos
Modelodeclarativo:generadosobjetos
nombre ubicacin valor
nombre valor
Vinculadosalingresaralmbitodeexistencia
Vinculadosmediantelaasignacin
A FFA0 9B76 21
A 21
Vinculadosenelmomentodelainvocacin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva15
Implementacindedatos
15UTN - FRM - SSL: Proceso de traduccin
Losobjetos dedatos siempre sondealgn tipo, loque implica que tienen asociados
Valores Operaciones (f:tipo xtipo tipo) Representacindesu almacenamiento
Equivalencia detipo
Estructural Por nombre (alias)
Verificacin
Calcularoinferirtiposyvalidarexpresiones Estticaodinmica
Variablesvs.Constantes
Segmentodedatosvs.segmentodecdigo
PrimitivosAtmicossinestructurainternacomplejaOperacionesimplementadasporhardware
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva16
Sistemageneraldetipos
16UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva17
Implementacindeltipoentero
Formatoderepresentacin Tipoentero(mximo2n1 1ymnimo2n1) Negativosporcomplemento2 Tamaoshabitualescon/sinsigno1,2,4,8bytes Operacionesmsrpidas Alineacin(bytemssignificativo)
S Dato
(0 +, 1 -) Entero en binario
descriptor
T Direccin S Dato
signo
T S Dato
descriptor signo
17UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva18
Implementacindeltipoentero
Ejemplos Seaxenterode32bits(2147483648 a+2147483647)x=2147483648; 10000000000000000000000000000000x=2147483648; 10000000000000000000000000000000
Seaxenterode32bitssinsigno(0a4294967296)x=2147483648; 10000000000000000000000000000000x=1; 11111111111111111111111111111111x=4294967296; 00000000000000000000000000000000x=4294967295; 11111111111111111111111111111111
18UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva19
Implementacindeltiporeal
Caractersticas Puntoflotante(IEEE754) Noexactos(simpleydobleprecisin) Tamaoshabituales4,8bytes Operacionesmslentasquelosenteros
Formatoderepresentacin(1)S *2(E B)*(1+(M/2N))donde 0
Diapositiva20
Implementacindeltiporeal
DadosEyM:E=255,M0 invlido E=255,M=0 infinito0
Diapositiva21
Implementacindeotrostipos
SlopositivosEnterossinsigno
Precisinexacta AlmacenamientopocoeficienteEj.1234.567=>1234567conS=3
Cantidaddedecimalesfija
Decimalopuntofijo
1bito1byteLgico
ASCII(1byte) UNICODE (2bytes)
Carcter
21UTN - FRM - SSL: Proceso de traduccin
EnC/C++losoperadores&&,||,!estnasociadosalos
tiposnumricos
EnC/C++setratacomountiponumrico
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva22
Conceptossobretiposdedatos
Sistemadetipos Mecanismoparadefinirtipos Conjuntodereglasparadeterminar
Equivalencia Compatibilidad Inferencia
Verificacindetipos(type checking) Violacindelareglas(type clash) Lenguajesfuertemente tipeados
Tiposestticos Lenguajesdbilmentetipeados
Tiposdinmicos
+
JS
Ada
Java / C#
C/C++
ASM
Fortran
o1
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva23
Conceptossobretiposdedatos
Conversin detipos Implcita =Coercin Explcita =cast (molde) Prdida dedatos (desbordamiento delamscara debits) Prdida deprecisin (truncamiento yredondeo)
Polimorfismo Unmismo operador aplicado adiferentes tipos
Subtipos Aes subtipo deB A B Mismo conjunto deoperaciones yformato derepresentacin Dominio de valores diferente
23UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva24
Punteros
Formato Noes unentero Tamao
Puntero vs.objeto apuntado Asignacin devalores
Inicial Final(garbage)
Consideracionesdediseo Importancia delainformacin detipo asociada Alcance ytiempo devida Implementacin dealmacenamiento dinmico Tipos deobjetos dedatos apuntados Restricciones alugares dnde apuntar Tipos recursivos
direccindememoria
Puntero
valor
Objetodedato
24UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva25
Punteros
AsignacinSean A y B variables reales: A BA: A:B: B:
Sean A y B variables puntero : A BA: A:B: B:
Sea A una variable puntero a puntero y B puntero: A BA: B:
7.2 0.40.4 0.4
7.20.4
0.4
25UTN - FRM - SSL: Proceso de traduccin
7.2
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva26
Punteros
Operaciones Asignarunadireccindememoria Obtenerunadireccindememoria Referenciarunadireccin dememoria Comparardireccionesdememoria Aritmticadepunteros Usodecast
Ejemplo
30
x(250)
12 250
x = 12;y = &x;
z = *y + 5;17
*y = 30;
*y(254)
z(258)
long x, *y, z;
26UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva27
Expresiones Operadores
Precedencia Asociatividad Sobrecarga
Caracter tratamiento comoenteros
Cadena tipo predefinido arreglos
Relacionales ylgicas evaluacin xcortocicuito
Aritmticas errores deredondeo vs.truncamiento (desbordamiento) bitdesigno
Tabla de jerarqua/asociatividad en C
I-D () [] -> .D-I ++ -- + - ! ~ (tipo) * & sizeofI-D * / %I-D + -I-D >I-D < >=I-D == !=I-D &I-D ^I-D |I-D &&I-D ||D-I ?:D-I = += -= *= /= %= &= ^= |= =I-D ,
27UTN - FRM - SSL: Proceso de traduccin
Seanint a,*b,Z=1,X=4,Y=2;a=4;b=&a;rbol deexpresin++*bvs.*++b++Z*Z++Z+(Y==0?X:X/Y)
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva28
Tiposestructurados
Grupodedatosdelmismoodiferentes tipos
Homogneos
Arreglos
Unidimensionales
Multidimensio
nales
Enum
erados
Heterogneos
Registros
Campo
sdebits
Union
es
Archivos Listas
Line
ales
Anillos
rbo
les
Grafos
28UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva29
ImplementacindeltipocadenaEsttico
Longitud fija
Longitud variable c/ lmite
Longitud variable s/ lmite
Longitud fija c/ delimitador
29UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva30
Arreglosunidimensionales
CaractersticasDimensin:Entero>0Sub=>L1 SubDB+k*tTipo
SubndicesconrangoSeax[L1..U1]:TIPO dondeL1=2yU1=9Espacio=(U1 L1+1)*tTipoLvalue(x[k])=>DB+(k L1)*tTipo = (DB L1*tTipo) +(k L1)*tTipoLvalue(x[k])=>OV +(k L1)*tTipo
30UTN - FRM - SSL: Proceso de traduccin
Conjunto homogneo de datos gestionado como un bloque
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva31
ArreglosbidimensionalesCaractersticasDimensiones:Entero>0Subndices=>L1 Sub1
Diapositiva32
Arreglosbidimensionales
SubndicesconrangoA[L1:U1,L2:U2]:TIPOD=(U2 L2+1)*tTipoLvalue(A[i,j])=DB+D *(i L1)+tTipo *(j L2) D=cte
Creacindeunarreglobidimensional:Espacio=(U2 L2+1)*(U1 L1+1)*tTipoD=(U2 L2+1)*tTipoOV=DB L1*D L2*tTipoLvalue(A[i,j])=OV +(i L1)*D +(j L2)*tTipo
32UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva33
Implementacingeneral
Almacenamientoa)Esttico(datosconocidosenlacompilacin:D,TyVO)int N = 5;float v[N];for (int i = 0; i < N; i++)
v[i] = i + 1;
b)Dinmicovar v = [0];for (i = 0; i < 5; i++)
v[i] = i + 1;
33UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva34
Arreglostridimensionales
Subndicesconrango
A[L1:U1,L2:U2,L3:U3]:TIPO
D1=(U2 L2+1)*(U3 L3+1)*tTipo
D2=(U3 L3+1)*tTipo
Lvalue(A[i,j,k])=DB+D1 *(i L1)+D2 *(j L2)+k*tTipo
Creacindeunarreglotridimensional
Espacio=(U3 L3+1)*(U2 L2+1)*(U1 L1+1)*tTipo
CalcularD2yD1
OV=DB L1*D1 L2*D2 L3*tTipo
Lvalue(A[i,j,k])=OV +(i L1)*D1 +(j L2)*D2+(k L3)*tTipo
34UTN - FRM - SSL: Proceso de traduccin
i
jk
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva35
Arreglosndimensionales
Paradimensionesconrango:
A[L1:U1,...,Ln:Un]
mn =tTipo
Tamaodecadadimensinmi
Parai=n 1hasta1hacer
mi =(Ui+1 Li+1 +1)*mi+1
OV=DB ni=1(Li *mi)Accesoaunelemento
A[s1,...,sn]=OV +ni=1((si Li )*mi)
35UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva36
Diferentesclasesdearreglos Slices
SeagregandescriptoresEjemploFortran90:
A(3,:)=B(7:15)
Asociativos Accesoadatossinunordenfijo Nombrescomosubndices Implementacincondescriptor
EjemploJSvar items ={"tucuman":12,"cordoba":19,"salta":21,"jujuy":31,"merlo":47,
"catamarca":51,"mendoza":61,"rosario":73,"corrientes":88};listString ="";for (varword initems)listString +=items[word]+",";alert(listString);
36UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva37
Mapadememoriadedatos
37UTN - FRM - SSL: Proceso de traduccin
Mapadememoria
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva38
Stack vs.Heap
Almacenamientodinmico mbitodereferencia Tiempodevidadelobjetodedato
voidmain(){char *s,*q,t[5];s=(char *)malloc(9);strcpy(t,"dos");strcpy(s,"uno");strcat(s,t);q=s;free(s);...puts(q);
}
*s *q t
heap
stack
d o s \0
u n o \0u n o d o s \0
38UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva39
GestindelHeap
Estadosposiblesdeceldas
Libre:sinreferenciasymarcadalibre
Ocupada:conreferenciasymarcada
ocupada
Basura:sinreferenciasymarcadaocupada
Colgada:conreferenciasymarcada
libre
Asignacinbloques
Tamaonico
Tamaovariable
Mtodosdereclamodebasura
Contadordereferencias
Recoleccindebasura
39UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva40
Llaves y cerradurasDebe usar contador de referencias para garantizar el no dejar referencias colgadasDeben coincidir los valores de lock y keyAl desalojar objeto, coloca un nulo en lockComplejidad en tiempo: - comparacin de cerraduras y llaves en cada accesoUso de espacio: - espacio extra para las cerraduras en cada apuntador y objeto del heap
Lpidas y tumbasDebe usar contador de referencias para garantizar el no dejar referencias colgadasEl apuntador contiene la direccin de la lpida y esta la del objetoAl liberar objeto, se asigna en la lpida un nuloComplejidad en tiempo: - creacin de lpidas cuando se alojan objetos- chequear validacin en cada acceso- doble indireccin para accesoUso de espacio: - espacio extra para las lpidas- nunca desalojar lpidas o poner contador de referencia a cada lpida
Tcnicasparaevitardangling
40UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva41
Enumeraciones
enum Color{Rojo,Verde,Azul};enum OtroColor {otroRojo =3,otroVerde =2,otroAzul =2};enum Colorx=Verde, z=Azul;enum OtroColor y;x=x+1;x=z x;y=otroAzul otroVerde;
Sedefineunnombreparacada valor
Smbolosasociados anmerosenteros
Nosoncadenas
Valoresdelaenumeracininicializados
NosoportanI/O
41UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva42
Registros
42UTN - FRM - SSL: Proceso de traduccin
struct AUTO{charmarca[10];floatprecio;unsignedmodelo;
chart;}miAuto;
struct PERSONA{unsigned int DNI;char nombre[20];struct FECHA{
unsigned int d;unsigned int m;unsigned int a;
}nacido;};struct PERSONAel,ella;
Estructurayalineacin Tamao Referenciaamiembros Direccionesdememoria Asignaciones Punterosamiembros
miAuto
marca precio modelo t
10 4 4 1
17
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva43
Implementacinderegistros
43UTN - FRM - SSL: Proceso de traduccin
struct Alumno{unsigned int legajo;char nombre[20];unsigned long dni;
};
struct Alumnox,*p;
x.legajo =24567;
strcpy(x.nombre, Juan);
x.dni=30768435;
p=&x;
Alumno
3
legajo
unsigned int
direccin
nombre
char[20]
direccin
dni
unsigned long
direccin
24569
Juan
32456987
Conjunto heterogneo de datos gestionados como un bloque
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva44
Unionesstruct LEASING{unsigned int cuotas;float valor;
};struct CONTADO{float monto;char cheque;
};unionMODO{struct LEASINGa;struct CONTADOb;
};enum Discr {leasing,contado};
struct VENTA {unionMODOventa;Discr tipo;
}operacion[100];
Un slo espacio compartido por datos diferentes
44UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva45
Camposdebits
struct FECHA{
unsigned int dia :5;
unsigned int mes :4;
unsigned int anio :7;
}ingreso;
Tamaos Punteros Acceso Alineacindecampos I/O
ingreso.dia = 19; // 10011
ingreso.mes = 27; // 11011
ingreso.anio = 7; // 111
45UTN - FRM - SSL: Proceso de traduccin
Fraccionar en bits el espacio de almacenamiento
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva46
Archivos
Operaciones
Apertura
Acceso
Modo
SecuencialModo
DirectoModo
IndexadoLectura
Escritura
Cierre
Almacenamiento
Persistente(discos,pendrivers,CD,DVD,etc.)
S.O.usabuffersparaI/O
Formato
Texto(secuenciadebytes,segnformato)
Binario(secuenciadebytesaimagendelamemoria)
Estructura
Bytes(conusoonodeseparadores)
Registros
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva47
Archivos
47UTN - FRM - SSL: Proceso de traduccin
Mapadememoria
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva48
Tiposrecursivos
structCIUDAD{
char nombre[15];
unsigned int dist;
structCIUDAD*prox;
}*primero;
AlmacenamientodinmicoTamaoajustableImplementacinderboles,pilas,colas,etc.
48UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva49
Generacindelistasimplementeenlazada
typedef struct DATO{char nombre[10];struct DATO *prox;} NODO;NODO* crear(int n){NODO *p = (NODO*)malloc(sizeof(NODO));p->prox = NULL;for (NODO *r=p, int k=1; k < n; k++){r->prox = (NODO*)malloc(sizeof(NODO));r->prox->prox = NULL;r = r->prox;
}return p;}...NODO *primero = crear(3);
*pstack
heapnombre prox NULL
nombre prox NULL
nombre prox
*r
NULL
49UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva50
Destruccindelistasimplementeenlazada
void destruir(NODO *p){NODO *r;while (p){
r = p->prox;free(p);p = r;
}}...NODO *primero = crear(3);...destruir(primero);
*pstack
heapnombre prox
nombre prox
nombre prox
*r
NULL
50UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva51
Subprogramasosubrutinas
Implementan laabstraccin deprocesos Procedimientos
Definen nuevos enunciados (sentencias) Puedenmodificar variableslocalesdelarutina llamadora Localidad dedatos Acceso adatos globales
Funciones Definen nuevas operaciones Regresan unvalor Localidad dedatos Acceso adatos globales
Corutinas Paralelismo
Programa
osubrutina
llamadaSubrutina
(funcinoprocedimiento)
51UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva52
Registrodeactivacin
int sum(int a,int b){int r;
r=a+b;return r;
}
voidmain(){int x=5,y,r;
y=6;r=sum(x,y);cout
Diapositiva53
Invocacindeunasubrutina
Llamada
Ponerenlapila losargumentos Guardarpuntoderetorno Ponerinformacindevnculos Llamaralarutina
Ejecucin
Guardarelframepointer anterior Asignarnuevoframepointer Crearespacioparavariables locales
Retorno
Limpiarvariables locales Restaurarframepointer Devolverelcontrolalpuntodellamada
53UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva54
Pasajedeargumentos
54UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva55
Pasajedeargumentosporvalor
void permutar(int x,int y){int r;r=x;x=y;y=r;
}voidmain(){
int a,b;a=3;b=7;permutar(a,b);cout
Diapositiva56
Pasajedeargumentosporreferencia
void permutar(int &x,int &y){int r;r=x;x=y;y=r;
}voidmain(){
int a,b;a=3;b=7;permutar(a,b);cout
Diapositiva57
Pasajedeargumentosporresultado
proc permutar(x,y,m,p:integer)m:=y;p:=x;
end procprog main
a,b:integer;a:=3;b:=4;permutar(a,a+b,a,b);print(a,b);
end prog
x y m p(400) (402) (404) (406)
a b(300) (302)
stack
3 4
3 7 300 302
7 3
57UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva58
Pasajedeargumentosporvalorresultado
proc permutar(x,y:integer)r:integer;r:=x;x:=y;y:=r;
end procprog main
a,b:integer;a:=3;b:=7;permutar(a,b);print(a,b);
end prog
x y r(400) (402) (404)
a b(300) (302)
stack
3 7
33 77 3
7 3
58UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva59
Pasajedeargumentospornombre
proc permutar(x,y,m,p:integer)m:=y;p:=x;
end procprog main
a,b:integer;a:=3;b:=4;permutar(a+b,b,a,b);print(a,b);
end prog
x y m p(400) (402) (404) (406)
a b(300) (302)
300 302
4 8
a := b = a := 4 b := (a + b) = b := 4 + 4
stack
3 4
exp 302
59UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva60
Pasajedeargumentospreinicializados
proc permutar(x,y,m,p:integer)m:=y;p:=x;
end procprog main
a,b:integer;a:=3;b:=4;permutar(a+b,b,a,b);print(a,b);
end prog
x y m p(400) (402) (404) (406)
a b(300) (302)
300 302
4 8
a := b = a := 4 b := (a + b) = b := 4 + 4
stack
3 4
exp 302
60UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva61
Pasajedeargumentosconstantes
proc permutar(p:constanteinteger)m:integer;m:=p;p:=10;
end procprog main
a,b:integer;a:=3;b:=4;permutar(a+b,b,a,b);print(a,b);
end prog
x y m p(400) (402) (404) (406)
a b(300) (302)
300 302
4 8
stack
3 4
exp 302
61UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva62
Llamadaafuncinrecursiva
int fac(int n){int f;if (n==0)
f=1;else
f=n*fac(n 1);return f;
}voidmain(){
int x=3,y;y=fac(x);cout
Diapositiva63
Registrodeactivacinyformasrecursivas
Normalrutina(parmetros) {
if (??) rutina(argumentos)
}
De colaSe usa cuando no es necesario retornar a la subrutina.tipo funcin(parmetros) {
if (??) return funcin(argumentos)
}
TransitivarutinaA(parmetros) {
if (??) rutinaB(argumentos)
}rutinaB(parmetros) {
rutinaA(argumentos)
}
63UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva64
Organizacindememoriaparaunprograma
DS
CS
0xFFFF0000
0x00000000
Argumentos del programa
Code
Static/GlobalHeap
Stack
local varsparametersframepointersret address
exe Codedll Code
globalsstaticsjumptables
dynamic datadyn objectsmallocs
0x0012FFFF
0x00401000
0x0040a000
0x00000000
heap
code
data
stack
bss
64UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva65
mbitosdeunasubrutina
char*func(char*M){constint initval=2;char*x="igual";strcpy(x,(M+initval));returnx;
}chars[10]="alguna";cout
Diapositiva66
var n = -1;function func2(m) {
var initval=2;if (initval == 2) x = m[initval]; return n * x;
}function func1() {
var k;with (Math) {
k = [sin(0.5), sin(0.5), sin(0.5)];}n = func2(k);alert(x + ", " + n);
}
Informacinsobresmbolosdeunasubrutina
66UTN - FRM - SSL: Proceso de traduccin
Alcanceytiempodevidadelossmbolos
Dinmico Local Global Esttico
accesible a partir del punto de declaracin, desde todo el programa, durante toda la ejecucin
accesible slo desde la funcindonde se declara
accesible a partir de que se ejecute el enunciado donde aparece por primera vez
objeto de dato esttico, accesible desde todo el programa, durante toda la ejecucin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva67
Discriminantedeacceso: mbito.id
mbitodealcance
67UTN - FRM - SSL: Proceso de traduccin
Alcance
Esttico
Variables
Ambiente
dereferencia
de
subrutinas
Nom
bres
desubrutinas
Dinmico
Variables
Ambiente
dereferencia
de
subrutinas
Determinadoporelbloquedonde sedeclara
Determinadoporelconjunto detodaslasvariablesquesonaccesibles
Determinadoportodos losmbitosdesdedondepueden serllamadas
Determinadopor losmbitosdetodaslassubrutinasllamadasdespusdeesta(hastaquealgunaredefinaelsmbolo)
Determinadoporelmbitodetodas lassubrutinasvivasllamadaspreviamente
BasadoeneltextodelprogramaBasadoenelflujodeejecucin
O L1
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva68
mbitodealcance
#include using namespace std;int count;void func2(void){
extern int count;for (count=1;count
Diapositiva69
mbitodealcance
procedure P isprocedure Q isprocedure R is
S()end RR()
end Qprocedure S is
...end SQ()
end P69UTN - FRM - SSL: Proceso de traduccin
Esttico Dinmico
S R
R S
Q Q
P P
Reglasestticas: importaladeclaracinydndesehace
Reglasdinmicas: importasloladeclaracin
ClausuraocierreEvaluacindeunafuncin enuncontextodondeseaccedeavariablesdeotrocontexto
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva70
mbitodealcanceJSfunction sumaCuadrados(a, b) {
function cuadrado(x) {return x * x;
}return cuadrado(a) + cuadrado(b);
}...
C/C++ (implementa una union)void P() {
int I;...if (...) {
int J;...
}while (...) {
int K, L;...
}}
Bloquesdecdigo Implementados comosubprogramas sinparmetros
Reservando espaciolocalenelregistro deactivacin
70UTN - FRM - SSL: Proceso de traduccin
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva71
Referenciaalcontexto
71UTN - FRM - SSL: Proceso de traduccin
Cdigo Almacenamiento
int x; esttico(global)
int foo(int z){ dinmicoenstack
charch[100]; dinmicoenstack
if(z==23)foo(7);
return 3;
}
voidmain(){
int y; dinmicoenstack
char*str; dinmicoenstack
str =malloc(100); dinmicoenheap
y=foo(23);
free(str);
}
Code:mainfoo
Esttico:x
Parmetros:void
Retorno:exit
Linkdinmico:void
Linkesttico
Variableslocales:y,str
Parmetros:z=23
Retorno
Linkdinmico
Linkesttico
Variableslocales:chr[]
Parmetros:z=7
Retorno
Linkdinmico
Linkesttico
Variableslocales:chr[]
Heap:[]
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva72
DisplayDisplay
LD
Datos
Display
LD
Datos
Display
LD
Datos
Display
LD
Datos
Referenciaalcontextoensubrutinas anidadas
72UTN - FRM - SSL: Proceso de traduccin
P()Q()R()S()
P
Q()
Q
R()
S
RS()
Cadena esttica
S
R
Q
P
LE
LD
Datos
LE
LD
Datos
LE
LD
Datos
LE
LD
Datos
Estructura del programa
o1
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva73
Referenciaencontextosrecursivos
UTN - FRM - SSL: Proceso de traduccin 73
contexto global...procedure P isprocedure Q is
...Q()...
end...P()...
end...contexto global
static links
Q
Q
Q
P
P
P
P
contexto global
display
Q
Q
Q
P
P
P
P
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________
Diapositiva74
Listavariabledeparmetros
voidA(int X, ...){int Y;C(Y);
}voidB(floatR){int S;int T;A(S);
}voidC(int Q){//hace algo
}voidmain(){floatP;B(P);
}
74UTN - FRM - SSL: Proceso de traduccin
C
Parmetros
Linkdinmico
Linkesttico
Retorno a:A
A
Parmetros
Parmetros
Local:X,Y
Linkdinmico
Linkesttico
Retorno a:B
B
Parmetros
Local:S,T
Linkdinmico
Linkesttico
Retorno a:main
main Local:P
Param_n
Param_2
Param_1
_____________________________________________________________________________
_____________________________________________________________________________
______________________________________________________________________
Recommended