Simplesem - sintaxis

Anuncio
ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION
DEFINICION DE UN LENGUAJE
SINTAXIS
(BNF-EBNF-DIAGRAMAS DE SINTAXIS).
+
SEMANTICA
OPERACIONAL(APROXIMACION UTILIZADA AQUI)
FORMAL(A TRAVES DE MECANISMOS RIGUROSOS Y EXACTOS).
SEMANTICA OPERACIONAL: Se describe el significado de cada
construcción del lenguaje en términos de las operaciones
correspondientes en un procesador abstracto.
SIMPLESEM
-PUNTERO DE INSTRUCCIONES
-MEMORIA(DE DATOS-DE CODIGO)
ip
Code Memory
(C)
Code Memory
(D)
Explicar la semántica de un comando explicando las operaciones correspondiente en
SIMPLESEM(LA SEMANTICA O FUNCIONAMIENTO DE SIMPLESEM YA ES CONOCIDA).
PROCESAMIENTO DE UN LENGUAJE
CONVERSION ENTRE LENGUAJES
DE ALTO NIVEL --a--> DE MAQUINA
que interpreta
que interpreta
un programador
la computadora
ALTERNATIVAS
INTERPRETACION: ejecución pasa a paso de cada instrucción de
un programa .
CICLO: LECTURA-DECODIFICACION-EJECUCION
Menor velocidad-Relativo aprovechamiento de memoria(solo se
carga una instrucción por vez).
COMPILACION: Conversión completa de un programa antes de su
ejecución.
FASES: COMPILACION-ENSAMBLADO
LINKEDITADO-CARGADO-EJECUCION
Mayor velocidad-Todo el programa debe cargarse en memoria para
su ejecución.
LIGADURA (BINDING)
Programas tratan con entidades (funciones,variables,sentencias).
poseen atributos (nombre, tipo, parámetros).
BINDING: Proceso de especificación de la naturaleza exacta de cada
atributo.
Ligadura
*entre una variable y su nombre
*Entre una variable y su tipo
*Entre un programa y su espacio
de almacenamiento.
*Entre un subprograma y sus
parámetros .
Proceso asociado
*Identificación
*Determinación
*Reserva de espacio
*Pasaje de parámetros
LENGUAJES DIFERENTES:
•
En número de entidades
•
En número de atributos
•
En momento de realizarlo
– Binding estático
– Binding Dinámico
• BINDING CONGELADO -> CONSTANTE
( Valor de la variable cuando es creada)
VARIABLES
Atracción de la noción de celda de memoria de una computadora.
Caracterizada por:
NOMBRE: usado para identificar y referirse a una variable.
AMBITO: es el rango de instrucciones de programa sobre el cual
una variable es conocida y manipulada. Fuera de el la variable es
INVISIBLE.
TIEMPO DE VIDA: es el intervalo de tiempo en el que un espacio de
almacenamiento (memoria) es asociado con una variable. Este
proceso es llamado ALOCACION.
VALOR: es el contenido del espacio de memoria asignado a al
variable. Esta representado en forma codificada (cadena de
bits). Esta codificación se interpretara de acuerdo al TIPO de la
variable.
TIPO: es la especificación de la clase de valores que puede ser
asociada con una variable junto con el conjunto que pueden
usarse para crear, modificar y acceder tales valores.
TIPOS PREDEFINIDOS
BOOLEAN: valores posibles(TRUE, FALSE).
Operaciones(AND, OR, NOT).
TIPOS DEFINIDOS POR EL USUARIO
Type T= array [1..10] of BOOLEAN
TIPOS ABSTRACTOS DE DATOS
TYPE counters
DEFINITION
Integer range 0..59
OPERATIONS
Up(counters);
down(counters);
Zero(counters)
END counters;
LIGADURA DINAMICA DE TIPOS
(APL SNOBOL)
A5
(variable simple)
A
(etiqueta)
A1 -2- 51(arreglo unidimensional)
UNIDADES DE PROGRAMAS
Descomposición de un programa:
1)Componentes de una Unidad de Programa:
-Segmento de código: fijo, se almacena en C[].
-registro de activación: variable, contiene toda la información
necesaria para la ejecución de una unidad de programa. Se
almacena en D[].
Variables locales y No locales.
Información de binding.
punto de retorno.
2)Activación de una Unidad de programa:
-una única instancia por unidad.
-mas de una instancia por unidad(lenguajes recursivos).
ESTRUCTURA DE LOS LP EN TIEMPO DE EJECUCION
DIVISION DE LOS LP DE ACUERDO A SUS REQUERIMIENTOS DE MEMORIA
a)Estáticos: con requerimientos de memoria
predeterminados.(FORTRAN,COBOL).
b)Basados en pila: con requerimientos de memoria
Predeterminados y con una estrategia de pila.(ALGOL 60).
c)Dinámicos: con requerimientos de memoria
Impredecibles (LISP,PROLOG,APL, JAVA).
d)Híbridos: b)+ c).(PASCAL, C, ADA).
EJEMPLOS DE CADA CLASIFICACION DE LENGUAJES:
1)Estructura del lenguaje FORTRAN (estáticos) .
Almacenamiento de un programa FORTRAN en memoria(todos los
segmento de código juntos en C[] y todos los registros de
activación en D[]).
Activation record for global data
ip
Code segment for unit 1
Activation record for unit 1
Code segment for
unit 2
Activation record for unit 2
Code segment for
unit 3
…
…
Activation record for unit n
Code segment for
unit n
code memory(c)
data memory(d)
• COMPILACION -> LENGUAJE MÁQUINA
• LINKADO -> ASIGNACIÓN DE MEMORIA
• CARGA -> CARGA DE MEMORIA (EJS. EN SIMPLESEM)
Ejs: Si RA (Registro de activación) de la unidad “i” se asigna a memoria a
partir de la posición 830 – La Posición de datos referenciada como [i,10]
será direccionada como D[840]
• El desplazamiento 0 tiene el puntero de retorno
Notación d[i,j] = es la posición de j a partir del RA de la unidad i
c[i,j] = instrucción en el desplazamiento j del segmento de codigo de la
unidad i
X = es c[i,j] o d[i,j] para indicar la dirección de x
• El traductor o compilador trasladará nombres de variables a un par de
c[i,j] o d[i,j]
• El linkador a direcciones c[m] o d[m]
Constructores descriptos: GOTO-CALL-RETURN (Transferencia de control).
Sentencia
Ligadura
Linkeditado
RA
GOTO X ip:=& c[i,j] (1)
ip:= j
COMMON
CALL P
d[P,0]:=ip+2 (2)
D[m]:=ip+2
MAIN
ip:=&c[P,0]
ip:=n
X
RETURN ip:=d[P,0]
ip:=D[m]
(1) i = unidad que está siendo trasladada - x = etiqueta de la instrucción localizada en
el desplazamiento j del segmento de código de la unidad i.
(2) Almacena el punto de retorno en la posición 0 del registro de activación de la
unidad P - b) Reemplazar el contenido del puntero de instrucción &c[P,0], la
primera instrucción de la unidad P transfiere el control a P. (luego del link m en la
dirección asignada al segmento de código de P.
(3) Reemplazar el puntero de instrucción en el contenido d[P,0] retorno de la unidad P
Link = m dirección de RA de P
Descripción en términos de funcionamiento de SIMPLESEM
D(3)=ip+2
Ip=5
0
ip
main
common
I
Return Point
main
Ip=3
J
noop
halt
Return Point
x
K
D(4)=5
D(0)=6
x
D(5)=D(0)+D(4)
Ip=D(3)
halt
Code memory
J
Data memory
D(3)=Ip+2
5
ip
common
I
Ip=5
Ip=3
main
J
noop
2
halt
D(4)=5
Return Point
x
K
J
D(0)=6
D(5)=D(0)+D(4)
Ip=D(3)
halt
Code memory
Return Point
Data memory
D(3)=ip+2
7
ip
Ip=5
common
6
Return Point
main
Ip=3
J
Noop
Halt
2
x
5
D(4)=5
Ip=D(3)
halt
Code memory
Return Point
K
J
D(0)=6
D(5)=D(0)+D(4)
I
Data memory
PROGRAMA
INTEGER I,J
COMMON I
CALL X
GOTO 10
LIGADURA
I <-> d[COMMON,0]
I <-> d[MAIN,1]
10 <-> c[MAIN,3]
X <-> c[X,0]
LINKEDITADO
I <-> D[0]
I <-> D[2]
10 <-> C[3]
X <-> D[5]
SOUBROTINE X
INTEGER K,J
COMMON I
K=5
I=6
J=1+K
RETURN
END
I<-> d[COMMON,0]
K<-> d[X,1]
J<-> d[X,2]
I <-> D[0]
K <-> D[4]
J <-> D[5]
D(3)=ip+2
common
5
Ip=5
2
ip
Ip=3
main
Noop
halt
D(4)=5
D(0)=6
D(5)=D(0)+D(4)
Ip=D(3)
halt
Code memory
2
x
5
11
Data memory
2)Estructura del lenguaje ALGOL (Basado en Pila)
unit A
unit B
unit C
end B
end C
unit D
end D
A
unit E
unit F
end F
end A
end E
B
unit G
C
end G
D
E
F G
Unidades de ejecución Disjuntas
Anidadas
Problemas básicos
Recursividad
Variables dinámicas:
type T=array [m,n] of real
VENTAJA BASICA DE UTILIZAR UNA ESTRUCTURA DE PILA:
Cada registro de activación que se carga en memoria, y se deja
libre ese espacio al finalizar su ejecución!!
1)Agregar en los registros de activación enlaces dinámicos
(además del punto de retorno).
2)Agregar dos punteros mas a SIMPLESEM:
2.1)free: siguiente dirección libre de memoria.
2.3)current: apunta al inicio del registro de activación actual.
CALL B D[free]:= ip+5
D[free+1]:=current
current :=free
free:= free+S (S tamaño de B)
ip:= n
RETURN free:=current
current:=D[current+1]
ip:=D[free]
Ejemplo:sea la siguiente secuencia de llamadas de rutinas
FGFGFEA
Genera la siguiente secuencia SIMPLESEM
A
E
F
G
F
G
Current
F
Free
3)ESTRUCTURA DE LOS LENGUAJES DINAMICOS
(APL,SNOBOL,LISP)
CONCEPCION: lenguajes con reglas dinámicas
A locación
Ligadura de tipo
Ligadura de ámbito
IMPLEMENTACION: Almacenamiento de los registros de activación
en una pila y enlace de los mismos a través de ENLACES
DINAMICOS
ESTRUCTURA DE UN PROGRAMA APL
Main
program
Subprogram
SUB
Function
subprogram
FUN
Descargar