Anda di halaman 1dari 75

Diapositiva1

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva2

Arquitecturasdetraduccin
Cdigo
fuente

Cdigo
binario

Frontend: dellenguaje dealto


nivel allenguaje intermedio

Cdigointermedio
(ensamblador,pcode,bytecode,etc.)

Backend:dellenguaje
intermedio alcdigo binario

UTN - FRM - SSL: Proceso de traduccin

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva3

Compilador
G3.AEF.
G2.AP.
Tokenizacin
rboles
Cdigofuente

Anlisislexicogrfico

Cdigotokenizado

Anlisissintctico

rbolessintcticos

Anlisissemntico

rbolesdecorados

Optimizacin

Cdigointermedio

Enlace
(generadordecdigo)

z:=(2*a*y+b)*(2*a*y+c)
t:=2*a*y;
Formaleseinformales.
z:=(t+b)*(t+c);
Comportamientos.
Estticasydinmicas.
for(k=1;k <a+b;k++)
x=k*b
t=a+b;
for(k=1;k<t; k++)

Cdigodemquina
UTN - FRM - SSL: Proceso de traduccin

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva4

Traductores
Intrpreteensoftware: porejemploJVM
Emuladordehardware: similaralanterior,peroimplementadoen
hardware
Traductorbinario: instruccionesdelanuevaarquitecturaque
reproducenelcomportamientodelavieja
Compiladornativo: compiladorescruzadosparaayudaracrearlos

UTN - FRM - SSL: Proceso de traduccin

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva5

Compiladornativo
programa
Anlisislexicogrfico
tokens
Tabladesmbolos
Nombre
Token asociado
Informacindetipo
Alcance
Direccin
Inicializacin

Anlisissintctico
rboles
Anlisissemntico
intermedio
Optimizacin
objeto

Generacin de
cdigo mquina

Cdigoobjeto
(bibliotecas
estticas)

Cdigoobjeto
(bibliotecas
dinmicas)

Enlace(linker)
ejecutable

UTN - FRM - SSL: Proceso de traduccin

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva6

Traductordeunpaso
U1

Facilidad de uso

Anlisislexicogrfico

caracteres

Aplicaciones sencillas
Poca optimizacin

Tablade
smbolos

Traduccin rpida
Etapas de anlisis y
generacin unificadas
Anlisissintctico

Anlisissemntico

Cdigo objeto
ineficiente

Generador

Gestinde
errores

cdigo objeto
ejecutable
errores

UTN - FRM - SSL: Proceso de traduccin

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva7

Intrprete puro
Traductor a
representacin
interna

instruccin

Facilidad de uso
Permiten interactuar
con el estado del
programa

Nmerode
instruccin

caracteres

Tablade
smbolos

Sin optimizacin

etiqueta

Analizan y ejecutan
un enunciado por vez
Las instrucciones se
Numeran o etiquetan

nmero

Evaluador
instrucciones

siguiente
instruccin

Requieren de un
entorno para ejecutar

Gestinde
errores
errores

UTN - FRM - SSL: Proceso de traduccin

datos

resultado de la
ejecucin

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva8

Pseudocompilador ointrprete parcial


Lenguajes modernos

Traductor

Traducen a un pseudocdigo de mquina


(por ej. P-code, bytecode, )

caracteres

Cdigo
intermedio

Multiplataforma
Intrprete por software
o hardware

Justintime
compiler

Requieren intrprete
para la ejecucin (VM),
pero es muy pequeo

Cdigodemquina

datos

Intrprete

errores

resultado de la ejecucin

UTN - FRM - SSL: Proceso de traduccin

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva9

CompiladoreseIntrpretes
Analizador
(lxicoysintctico)

Preprocesador

Programa
fuente

rbolde
anlisis

Traductor

Intrprete

Entornode
ejecucin

Programa

Compilador

Cdigo
ensamblador

Intrpreteparcial

Enlazador

Bytecode

Cdigode
mquina

Compiladores e intrpretes
tienen similares front-ends pero diferentes back-ends
UTN - FRM - SSL: Proceso de traduccin

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva10

Implementacinsemntica:asignacin
Asignacin
Cambiodeestado

Modos
Mltiple
Entrada(input)
Inicializacinvs.Asignacin
A=C+1

Conceptos
Lvalue vs.Rvalue

R-value
Expresin
Constante
Variable

L-value
Referencia a memoria
Nunca una expresin o constante

Enunciadovs.Operador

UTN - FRM - SSL: Proceso de traduccin

10

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva11

Implementacinsemntica:bifurcacin
Semntica
Expresin decontrol

Formas

Simple
Doble
Mltiple
Selectordecasos

[evalua expresin y deja resultado en


registro]
JZR else
[bloque verdad]
JZR end
else:
[bloque falso]
end:
[resto del programa]

Opcindedescarte
Bloque deenunciados
Esquemasdeanidamiento
Transferenciaincondicional
Rtulos
UTN - FRM - SSL: Proceso de traduccin

11

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva12

Implementacinsemntica:iteracin
Semntica
Expresin decontrol
Bloque deenunciados
Esquemasdeanidamiento
Ciclos
Modificacininternadeparmetros
Cantidadindeterminada
top [evalua expresin y deja
Evaluacininicialyfinal
resultado en registro]
JZR exit
Cantidaddeterminada
[bloque]
Valorinicialyfinal
JZR top
exit:
[resto del programa]

UTN - FRM - SSL: Proceso de traduccin

12

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva13

Semnticadedatos
Implementacin
Direccionesde
memoria

Descriptores
(conjuntodeatributos)

Abstraccinmediante
variables

Estticos
nombre
tipo

tipo

Dinmicos

direccin
valor
tiempodevida
alcance

direccin
valor
tiempodevida
alcance

Almacenamiento
binario

Formatos

Dato
DescriptoryDato

Descriptor

UTN - FRM - SSL: Proceso de traduccin

Dato
13

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva14

Declaracindevariables
Sea

Vinculadosmediante
laasignacin

intA;
A=21;

Vinculadosalingresaral
mbitodeexistencia

Modeloimperativo:generatresobjetos
nombre
A

ubicacin

valor

FFA0 9B76

21

Vinculadosenelmomentode
lainvocacin

Modelodeclarativo:generadosobjetos
nombre

valor

21

UTN - FRM - SSL: Proceso de traduccin

14

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva15

Implementacindedatos
Losobjetos dedatos siempre son dealgn tipo, loque implica que tienen asociados
Valores
Operaciones (f:tipo xtipo tipo)
Representacin desu almacenamiento
Equivalencia detipo
Estructural
Por nombre (alias)
Verificacin
Calcularoinferirtiposyvalidarexpresiones
Estticaodinmica
Variablesvs.Constantes
Segmentodedatosvs.segmentodecdigo

Primitivos
Atmicossinestructurainternacompleja
Operacionesimplementadasporhardware
UTN - FRM - SSL: Proceso de traduccin

15

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva16

Sistemageneraldetipos

UTN - FRM - SSL: Proceso de traduccin

16

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva17

Implementacindeltipoentero
Formatoderepresentacin

Tipoentero(mximo2n1 1ymnimo2n1 )
Negativosporcomplemento2
Tamaoshabitualescon/sinsigno1,2,4,8bytes
Operacionesmsrpidas
Alineacin(bytemssignificativo)
S

Dato

(0 +, 1 -)

Entero en binario

descriptor

Direccin

descriptor

Dato

signo

Dato

signo

UTN - FRM - SSL: Proceso de traduccin

17

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva18

Implementacindeltipoentero
Ejemplos
Seaxenterode32bits(2147483648 a+2147483647)

x=2147483648; 10000000000000000000000000000000
x=2147483648; 10000000000000000000000000000000

Seaxenterode32bitssinsigno(0a4294967296)
x=2147483648; 10000000000000000000000000000000
x=1;
11111111111111111111111111111111
x=4294967296; 00000000000000000000000000000000
x=4294967295; 11111111111111111111111111111111

UTN - FRM - SSL: Proceso de traduccin

18

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva19

Implementacindeltiporeal
Caractersticas
Puntoflotante(IEEE754)
Noexactos(simpleydobleprecisin)
Tamaoshabituales4,8bytes
Operacionesmslentasquelosenteros

Formatoderepresentacin
(1)S *2(E B)*(1+(M/2N))donde 0<=M<1
Ncantidad debitspara M(23or52)
Bes 127(32bits)o1023(64bits)

UTN - FRM - SSL: Proceso de traduccin

19

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva20

Implementacindeltiporeal
DadosEyM:
E=255,M<>0 invlido
E=255,M=0 infinito
0<E<255 2{E127}*(1+(M/223))
E=0,M<>0 2126*(M/223)
E=0,M=0 0
Seaxflotantede32bits x=0.3333333333333333;
0 01111101 01010101010101010101011
x=0.3;
0 01111101 00110011001100110011010
Reconstruido:0.3000000119209289600
x=1.0
0 01111111 00000000000000000000000
Comparaciones errneas:==o!=
Solucin:establecer une=0.001
(x 3.0)<e||(3.0 x)<e

UTN - FRM - SSL: Proceso de traduccin

20

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva21

Implementacindeotrostipos
Enterossinsigno

Decimalopuntofijo

Slopositivos

Precisinexacta
Almacenamientopocoeficiente
Ej.1234.567=>1234567conS=3
Cantidaddedecimalesfija
EnC/C++losoperadores&&,
||,!estnasociadosalos
tiposnumricos

Lgico

1bito1byte
EnC/C++setratacomoun
tiponumrico

Carcter

ASCII(1byte)
UNICODE(2bytes)

UTN - FRM - SSL: Proceso de traduccin

21

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva22

Conceptossobretiposdedatos o1
Sistemadetipos

Mecanismoparadefinirtipos
Conjuntodereglasparadeterminar
Equivalencia
Compatibilidad
Inferencia

Ada
Java / C#
Fortran

Verificacindetipos(type checking)
Violacindelareglas(type clash)
Lenguajesfuertemente tipeados

C/C++
JS

Tiposestticos

Lenguajesdbilmentetipeados

ASM

Tiposdinmicos

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

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

UTN - FRM - SSL: Proceso de traduccin

23

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva24

Punteros
Formato
Noes unentero
Tamao
Puntero vs.objeto apuntado

direccinde
memoria

Asignacin devalores
Inicial
Final(garbage)

Objetode
dato
valor

Puntero

Consideracionesdediseo

Importancia delainformacin detipo asociada


Alcance ytiempo devida
Implementacin dealmacenamiento dinmico
Tipos deobjetos dedatos apuntados
Restricciones alugares dnde apuntar
Tipos recursivos

UTN - FRM - SSL: Proceso de traduccin

24

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva25

Punteros
Asignacin
Sean A y B variables reales: A B
0.4
A: 7.2
A:
0.4
0.4
B:
B:
Sean A y B variables puntero : A B
7.2
A:
A:
0.4
B:
B:

0.4

Sea A una variable puntero a puntero y B puntero: A B


7.2
A:
B:

UTN - FRM - SSL: Proceso de traduccin

25

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva26

Punteros
Operaciones

Asignarunadireccindememoria
Obtenerunadireccindememoria
Referenciarunadireccindememoria
Comparardireccionesdememoria
Aritmticadepunteros
Usodecast

Ejemplo
long x, *y, z;
x = 12;
y = &x;

*y

(250)

(254)

(258)

12
30

250

17

z = *y + 5;
*y = 30;
UTN - FRM - SSL: Proceso de traduccin

26

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva27

Expresiones
Operadores

Precedencia
Asociatividad
Sobrecarga

Caracter
tratamiento como enteros

Cadena
tipo predefinido
arreglos

Relacionales ylgicas
evaluacin xcortocicuito

Aritmticas

Tabla de jerarqua/asociatividad en C
I-D () [] -> .
D-I ++ -- + - ! ~ (tipo) * & sizeof
I-D * / %
I-D + Sean
I-D << >>
int a,*b,Z=1,X=4,Y=2;
I-D < <= > >= a=4;
I-D == !=
b=&a;
I-D &
rbol deexpresin
I-D ^
++*bvs.*++b
I-D |
++Z*Z++
I-D &&
Z+(Y==0?X:X/Y)
I-D ||
D-I ?:
D-I = += -= *= /= %= &= ^= |= <<= >>=
I-D ,

errores deredondeo vs.truncamiento (desbordamiento)


bitdesigno
UTN - FRM - SSL: Proceso de traduccin

27

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva28

Tiposestructurados
Grupodedatosdelmismoodiferentes tipos

Grafos

rboles

Lineales

UTN - FRM - SSL: Proceso de traduccin

Anillos

Listas

Archivos

Registros

Uniones

Multidimensionales

Unidimensionales

Arreglos

Heterogneos

Camposdebits

Enumerados

Homogneos

28

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva29

Implementacindeltipocadena
Esttico

Longitud fija

Longitud variable c/ lmite

Longitud variable s/ lmite

Longitud fija c/ delimitador

UTN - FRM - SSL: Proceso de traduccin

29

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva30

Arreglosunidimensionales
Conjunto homogneo de datos gestionado como un bloque
Caractersticas
Dimensin:Entero>0
Sub=>L1 Sub<L1+Dim
Clculodedirecciones
int x[8];
Lvalue:x[5]=15;
Lvalue yRvalue:x[2]=x[5];
Lvalue(x[k])=>DB+k*tTipo
Subndicesconrango
Seax[L1..U1]:TIPO
dondeL1=2yU1=9
Espacio=(U1 L1+1)*tTipo
Lvalue(x[k])=>DB+(k L1)*tTipo = (DB L1*tTipo) +(k L1)*tTipo
Lvalue(x[k])=>OV +(k L1)*tTipo
UTN - FRM - SSL: Proceso de traduccin

30

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva31

Arreglosbidimensionales
Caractersticas
Dimensiones:Entero>0
Subndices=>L1 Sub1<L1+Dim1,L2 Sub2<L2+Dim2
Clculo de direcciones
int x[4][3];
x[2][1] = 434;
L-value(x[i][j]) => DB + i * D + j * tTipo
D = dimensin_columna * tTipo

UTN - FRM - SSL: Proceso de traduccin

31

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva32

Arreglosbidimensionales
Subndicesconrango
A[L1:U1,L2:U2]:TIPO
D=(U2 L2+1)*tTipo
Lvalue(A[i,j])=DB+D *(i L1)+tTipo *(j L2)

D=cte

Creacindeunarreglobidimensional:
Espacio=(U2 L2+1)*(U1 L1+1)*tTipo
D=(U2 L2+1)*tTipo
OV=DB L1*D L2*tTipo
Lvalue(A[i,j])=OV +(i L1)*D +(j L2)*tTipo
UTN - FRM - SSL: Proceso de traduccin

32

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva33

Implementacingeneral
Almacenamiento
a)Esttico(datosconocidosenlacompilacin:D,TyVO)
int N = 5;
float v[N];
for (int i = 0; i < N; i++)
v[i] = i + 1;

b)Dinmico
var v = [0];
for (i = 0; i < 5; i++)
v[i] = i + 1;

UTN - FRM - SSL: Proceso de traduccin

33

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva34

Arreglostridimensionales
Subndicesconrango

k
j

A[L1:U1,L2:U2,L3:U3]:TIPO
i

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
UTN - FRM - SSL: Proceso de traduccin

34

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

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 )

UTN - FRM - SSL: Proceso de traduccin

35

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva36

Diferentes clasesdearreglos
Slices
Seagregandescriptores
EjemploFortran90:
A(3,:)=B(7:15)
Asociativos
Accesoadatossinunordenfijo
Nombrescomosubndices
Implementacincondescriptor

EjemploJS
var items ={"tucuman":12,"cordoba": 19,"salta":21,"jujuy":31,"merlo":47,
"catamarca":51,"mendoza":61,"rosario":73,"corrientes":88};
listString ="";
for (var word initems)listString +=items[word]+",";
alert(listString);
UTN - FRM - SSL: Proceso de traduccin

36

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva37

Mapadememoriadedatos

Mapadememoria

UTN - FRM - SSL: Proceso de traduccin

37

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva38

Stack vs.Heap

Almacenamientodinmico
mbitodereferencia
Tiempodevidadelobjetodedato

void main(){
char *s,*q,t[5];
s=(char *)malloc(9);
strcpy(t,"dos");
strcpy(s,"uno");
strcat(s,t);
q=s;
free(s);
...
puts(q);
}

heap uu nn oo \0
d o s \0

stack

*s *q

UTN - FRM - SSL: Proceso de traduccin

s \0

38

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva39

GestindelHeap

Estados
posiblesde
celdas

Asignacin
bloques

Mtodosde
reclamode
basura

Tamaonico

Contadorde
referencias

Tamaovariable

Recoleccinde
basura

Libre:sinreferenciasy
marcadalibre
Ocupada:con
referenciasymarcada
ocupada
Basura:sinreferencias
ymarcadaocupada
Colgada:con
referenciasymarcada
libre

UTN - FRM - SSL: Proceso de traduccin

39

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva40

Tcnicasparaevitardangling
Lpidas y tumbas
Debe usar contador de referencias para garantizar el no dejar referencias colgadas
El apuntador contiene la direccin de la lpida y esta la del objeto
Al liberar objeto, se asigna en la lpida un nulo
Complejidad en tiempo:
- creacin de lpidas cuando se alojan objetos
- chequear validacin en cada acceso
- doble indireccin para acceso
Uso de espacio:
- espacio extra para las lpidas
- nunca desalojar lpidas o poner contador de referencia a cada lpida
Llaves y cerraduras
Debe usar contador de referencias para garantizar el no dejar referencias colgadas
Deben coincidir los valores de lock y key
Al desalojar objeto, coloca un nulo en lock
Complejidad en tiempo:
- comparacin de cerraduras y llaves en cada acceso
Uso de espacio:
- espacio extra para las cerraduras en cada apuntador
y objeto del heap
UTN - FRM - SSL: Proceso de traduccin

40

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva41

Enumeraciones
Sedefineunnombreparacada valor
Smbolosasociados anmerosenteros
Nosoncadenas
Valoresdelaenumeracininicializados
NosoportanI/O
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;

UTN - FRM - SSL: Proceso de traduccin

41

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva42

Registros
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;

miAuto
marca

precio

10

modelo

17

Estructurayalineacin
Tamao
Referenciaamiembros
Direccionesdememoria
Asignaciones
Punterosamiembros

UTN - FRM - SSL: Proceso de traduccin

42

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva43

Implementacinderegistros
Conjunto heterogneo de datos gestionados como un bloque
struct Alumno{
unsigned int legajo;
char nombre[20];
unsigned long dni;
};

Alumno

24569

Juan

legajo

32456987

unsigned int
direccin

struct Alumnox,*p;

nombre

x.legajo =24567;

char[20]

strcpy(x.nombre, Juan);

direccin

x.dni=30768435;

dni
unsigned long

p=&x;

direccin

UTN - FRM - SSL: Proceso de traduccin

43

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva44

Uniones
struct LEASING{
unsigned int cuotas;
float valor;
};
struct CONTADO{
float monto;
char cheque;
};
union MODO{
struct LEASINGa;
struct CONTADOb;
};
enum Discr {leasing,contado};

Un slo espacio compartido por


datos diferentes

struct VENTA {
union MODOventa;
Discr tipo;
}operacion[100];
UTN - FRM - SSL: Proceso de traduccin

44

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva45

Camposdebits
Fraccionar en bits el espacio de almacenamiento
struct FECHA{
unsigned int dia :5;
unsigned int mes:4;
unsigned int anio :7;
}ingreso;

ingreso.dia = 19;

// 10011

ingreso.mes = 27;

// 11011

ingreso.anio = 7;

// 111

Tamaos
Punteros
Acceso
Alineacindecampos
I/O

UTN - FRM - SSL: Proceso de traduccin

45

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva46

Archivos
Almacenamiento

Formato

Persistente(discos,
pendrivers,CD,DVD,
etc.)
S.O.usabufferspara
I/O

Texto(secuenciade
bytes,segnformato)
Binario(secuenciade
bytesaimagendela
memoria)
Apertura
Acceso

Operaciones

Lectura

Estructura
Bytes(conusoono
deseparadores)
Registros

Modo
Secuencial
Modo
Directo
Modo
Indexado

Escritura
Cierre

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva47

Archivos

Mapadememoria
UTN - FRM - SSL: Proceso de traduccin

47

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva48

Tiposrecursivos
Almacenamientodinmico
Tamaoajustable
Implementacinderboles,pilas,colas,etc.
struct CIUDAD{
char nombre[15];
unsigned int dist;
struct CIUDAD*prox;
}*primero;

UTN - FRM - SSL: Proceso de traduccin

48

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva49

Generacindelistasimplemente enlazada
typedef struct DATO{
char nombre[10];
struct DATO *prox;
} NODO;

stack

*p

*r

heap

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);

UTN - FRM - SSL: Proceso de traduccin

nombre prox

NULL

nombre prox

NULL

nombre prox

NULL

49

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva50

Destruccindelistasimplemente enlazada
void destruir(NODO *p){
NODO *r;
while (p){
r = p->prox;
free(p);
p = r;
}
}
...
NODO *primero = crear(3);
...
destruir(primero);

stack

*p

*r

heap
nombre prox

nombre prox

nombre prox

UTN - FRM - SSL: Proceso de traduccin

NULL

50

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva51

Subprogramasosubrutinas
Implementan laabstraccin deprocesos
Procedimientos
Definen nuevos enunciados (sentencias)
Pueden modificar variableslocalesdelarutina llamadora
Localidad dedatos
Acceso adatos globales

Funciones
Definen nuevas operaciones
Regresan unvalor
Localidad dedatos

Programa
osubrutina

Acceso adatos globales

llamada

Subrutina
(funcin o
procedimiento)

Corutinas
Paralelismo

UTN - FRM - SSL: Proceso de traduccin

51

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva52

Registrodeactivacin
Definido durante la traduccin (prlogo + cuerpo + eplogo)
Creado al invocar la subrutina y destruido al finalizar
Almacena variables locales y enlaces a otros contextos
Alojado en el stack (imperativos) o el heap (declarativos)
int sum(int a,int b){
int r;
r=a+b;
return r;
}
void main(){
int x=5,y,r;
y=6;
r=sum(x,y); 11
cout <<r;
}
UTN - FRM - SSL: Proceso de traduccin

11

11

52

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva53

Invocacindeunasubrutina

Llamada

Ejecucin

Retorno

Ponerenlapilalosargumentos
Guardarpuntoderetorno
Ponerinformacindevnculos
Llamaralarutina

Guardarelframepointer anterior
Asignarnuevoframepointer
Crearespacioparavariableslocales

Limpiarvariableslocales
Restaurarframepointer
Devolverelcontrolalpuntodellamada

UTN - FRM - SSL: Proceso de traduccin

53

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva54

Pasajedeargumentos

UTN - FRM - SSL: Proceso de traduccin

54

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva55

Pasajedeargumentosporvalor

void permutar(int x,int y){


int r;
r=x;
x=y;
y=r;
}
void main(){
int a,b;
a=3;
b=7;
permutar(a,b);
cout <<a<<b;

(400) (402) (404)


3
3
37
7
a

(300) (302)
3

stack

UTN - FRM - SSL: Proceso de traduccin

55

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva56

Pasajedeargumentosporreferencia
void permutar(int &x,int

&y){

int r;
r=x;
x=y;
y=r;

}
void main(){
int a,b;
a=3;
b=7;
permutar(a,b);
cout <<a<<b;
}

*x

*y

(400) (402) (404)


300

302

(300) (302)
37
73

stack

UTN - FRM - SSL: Proceso de traduccin

56

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva57

Pasajedeargumentosporresultado
proc permutar(x,y,m,p:integer)

m:=y;
p:=x;
end proc
prog main
a,b:integer;
a:=3;
b:=4;
permutar(a,a+b,a,b);
print(a,b);
end prog

(400) (402) (404) (406)

300

302

(300) (302)
37

34

stack

UTN - FRM - SSL: Proceso de traduccin

57

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva58

Pasajedeargumentosporvalorresultado
proc permutar(x,y:integer)

r:integer;
r:=x;
x:=y;
y:=r;
end proc
prog main
a,b:integer;
a:=3;
b:=7;
permutar(a,b);
print(a,b);
end prog

(400) (402) (404)


37

73

(300) (302)
7
3

7
3

stack

UTN - FRM - SSL: Proceso de traduccin

58

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva59

Pasajedeargumentospornombre
proc permutar(x,y,m,p:integer)
m:=y; a := b = a := 4
p:=x; b := (a + b) = b := 4 + 4
end proc
prog main
a,b:integer;
a:=3;
b:=4;
permutar(a+b,b,a,b);
print(a,b);
end prog

(400) (402) (404) (406)


exp

302

300

302

(300) (302)
4
3

8
4

stack

UTN - FRM - SSL: Proceso de traduccin

59

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva60

Pasajedeargumentospreinicializados

proc permutar(x,y,m,p:integer)
m:=y; a := b = a := 4
p:=x; b := (a + b) = b := 4 + 4
end proc
prog main
a,b:integer;
a:=3;
b:=4;
permutar(a+b,b,a,b);
print(a,b);
end prog

(400) (402) (404) (406)


exp

302

300

302

(300) (302)
4
3

8
4

stack

UTN - FRM - SSL: Proceso de traduccin

60

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva61

Pasajedeargumentosconstantes
proc permutar(p:constanteinteger)

m:integer;
m:=p;
p:=10;
end proc
prog main
a,b:integer;
a:=3;
b:=4;
permutar(a+b,b,a,b);
print(a,b);
end prog

(400) (402) (404) (406)

exp

302

300

302

(300) (302)
4
3

8
4

stack

UTN - FRM - SSL: Proceso de traduccin

61

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva62

Llamadaafuncinrecursiva

int fac(int n){


int f;
if (n==0)
f=1;
else
f=n*fac(n 1);
return f;
}
void main(){
int x=3,y;
y=fac(x);
cout <<y;
}

UTN - FRM - SSL: Proceso de traduccin

62

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva63

Registrodeactivacinyformasrecursivas
Normal

Transitiva

rutina(parmetros) {

if (??) rutina(argumentos)

rutinaA(parmetros) {

if (??) rutinaB(argumentos)

}
rutinaB(parmetros) {

rutinaA(argumentos)

De cola
Se usa cuando no es necesario retornar
a la subrutina.
tipo funcin(parmetros) {

if (??) return funcin(argumentos)


}

UTN - FRM - SSL: Proceso de traduccin

63

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva64

Organizacindememoriaparaunprograma
0x00000000
stack

local vars
parameters
framepointers
ret address

0x0012FFFF

0xFFFF0000
Argumentos del programa
Stack
DS
Heap

0x00401000
code
0x0040a000

data
bss
heap

exe Code
dll Code
globals
statics
jumptables

Static/Global
CS

Code
0x00000000

dynamic data
dyn objects
mallocs

UTN - FRM - SSL: Proceso de traduccin

64

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva65

mbitosdeunasubrutina
char*func(char*M){
constint initval=2;
char*x="igual";
strcpy(x,(M+initval));
returnx;
}

chars[10]="alguna";
cout <<func(s)<<endl;

Cdigoejecutable

Registrodeactivacin

Instruccionesparacrear
elregistrodeactivacin

Puntoderetorno
Almacenamiento temporal
Otrosdatos

Cdigoejecutable
Instruccionespara
destruirelregistro

Valorretornado (func)
M[]:parmetro

initval:const local

igual

x:local

Qu ocurre alejecutarlo?
Motivo deloserrores?

Registro
Registro
(endatasegment)
(endatasegment)
Registro
(endatasegment)

Cdigo
(codesegment)

UTN - FRM - SSL: Proceso de traduccin

65

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva66

Informacinsobresmbolosdeunasubrutina
Alcanceytiempodevidadelossmbolos
Dinmico

Local

Global

Esttico

var n = -1;
accesible a partir del punto de
function func2(m) {
declaracin, desde todo el
programa, durante toda la ejecucin
var initval=2;
if (initval == 2) x = m[initval];
return n * x;
accesible slo
}
desde la funcin
accesible a partir de que se
function func1() {
donde se
ejecute el enunciado donde
var k;
aparece por primera vez
declara
with (Math) {
k = [sin(0.5), sin(0.5), sin(0.5)];
}
objeto de dato esttico, accesible
n = func2(k);
desde todo el programa, durante
alert(x + ", " + n);
toda la ejecucin
}
UTN - FRM - SSL: Proceso de traduccin

66

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva67

mbitodealcance

O L1

Basadoeneltextodelprograma
Basadoenelflujodeejecucin
Discriminantedeacceso: mbito.id
Determinadopor elbloque donde se
declara

Alcance

Determinadopor elconjunto detodaslas


variablesquesonaccesibles
Determinadopor todos losmbitosdesde
dondepueden serllamadas

Ambientedereferenciade
subrutinas

Variables

Dinmico

Nombresdesubrutinas

Ambientedereferenciade
subrutinas

Variables

Esttico

Determinadopor losmbitosdetodaslas
subrutinasllamadasdespus deesta
(hastaquealgunaredefinaelsmbolo)

Determinadopor elmbitodetodas las


subrutinasvivasllamadaspreviamente

UTN - FRM - SSL: Proceso de traduccin

67

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva68

mbitodealcance
var cadena="hola";
function f(){
resultado=cadena+",unsaludo";
cadena="Hastaluego";
}
function ff (){
var cadena=0;
var resultado=0;
if (resultado==0){
var valor=1;
}
cadena=valor;
alert("ff>R:"+resultado);
alert("ff>C:"+cadena);
}
f();
alert("C:"+cadena+R:"+resultado);
ff();
alert("C:"+cadena+R:"+resultado);

#include <iostream>
using namespace std;
int count;
void func2(void){
extern int count;
for (count=1;count<10; count++)
cout <<".;
}
void func1(void){
int temp;
temp =count;
func2();
cout <<"count is <<count <<endl;
}
int main(){
count =100;
func1();
getchar();
}

UTN - FRM - SSL: Proceso de traduccin

68

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva69

mbitodealcance
Reglasestticas: importaladeclaraciny dnde sehace

Reglasdinmicas: importasloladeclaracin

procedure P is
procedure Q is
procedure R is
S()
end R
R()
end Q
procedure S is
...
end S
Q()
end P

Clausuraocierre
Evaluacindeunafuncin enuncontexto
dondeseaccedeavariablesdeotro contexto

UTN - FRM - SSL: Proceso de traduccin

Esttico

Dinmico

Q
P

Q
P
69

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva70

mbitodealcance
Bloquesdecdigo
Implementados como
subprogramas sin
parmetros
Reservando espacio
localenelregistro de
activacin

JS
function 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;
...
}
}

UTN - FRM - SSL: Proceso de traduccin

70

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva71

Referencia alcontexto
Cdigo

Almacenamiento

int x;

esttico(global)

int foo(int z){

dinmicoenstack

charch[100];

Code:main
foo
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[]

dinmicoenstack

if(z==23)foo(7);
return 3;
}
voidmain(){
int y;

dinmicoenstack

char*str;

dinmicoenstack

str =malloc(100);

dinmicoenheap

y=foo(23);
free(str);
}

Heap:[]

UTN - FRM - SSL: Proceso de traduccin

71

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva72

Referencia alcontextoensubrutinas anidadas

o1

P()Q()R()S()
Estructura del programa

Display

Cadena esttica
LE

Display

LD

R()

Datos

LD
Datos

LE

S()

Display

LD

Datos

LD
Datos

LE

Display

LD

Datos

LD
Datos

LE

Q()

Display

LD

LD
P

Datos

UTN - FRM - SSL: Proceso de traduccin

Datos
72

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva73

Referenciaencontextosrecursivos
contexto global
...
procedure P is
procedure Q is
...
Q()
...
end
...
P()
...
end
...
contexto global

static links

display

contexto global

UTN - FRM - SSL: Proceso de traduccin

73

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva74

Listavariabledeparmetros
Parmetros

voidA(int X,...){
int Y;
C(Y);
}
voidB(floatR){
int S;
int T;
A(S);
}
voidC(int Q){
//hace algo
}
voidmain(){
floatP;
B(P);
}

Linkdinmico
Linkesttico
Retorno a:A
Parmetros
Parmetros

A Local:X,Y
Linkdinmico

Param_n

Param_2
Param_1

Linkesttico
Retorno a:B
Parmetros
Local:S,T
B Linkdinmico
Linkesttico
Retorno a:main
main Local:P

UTN - FRM - SSL: Proceso de traduccin

74

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Diapositiva75

Punterosafunciones
Pasajedeparmetrospornombre
Funcionesdeordensuperior
Forma: tipo devuelto (*var) (tipos args)
Forma: Function (arg {, arg}*, cuerpo)

floatuna(int a){return1;}
floatdos(int a){return2;}
var suma=newFunction("x",
floattres(int
a){return3;}
"y",
"var a=x*x,
int main() {
b=y*y;
float (*q[]) (int) ={una,dos,tres};
for(int k=0;k<3;k++) return a+b");
var rptcout
=suma(2,3);
<<(*q[k])(k<<endl);
} alert(rpt);

UTN - FRM - SSL: Proceso de traduccin

75

_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________________________________________________________________________
_____________

Anda mungkin juga menyukai