La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION

Presentaciones similares


Presentación del tema: "ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION"— Transcripción de la presentación:

1 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.

2 SIMPLESEM -PUNTERO DE INSTRUCCIONES -MEMORIA(DE DATOS-DE CODIGO) ip
Code Memory Code Memory (C) (D) Explicar la semántica de un comando explicando las operaciones correspondiente en SIMPLESEM(LA SEMANTICA O FUNCIONAMIENTO DE SIMPLESEM YA ES CONOCIDA). ip

3 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).

4 COMPILACION: Conversión completa de un programa antes de su ejecución
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.

5 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 Proceso asociado *entre una variable y su nombre *Identificación *Entre una variable y su tipo *Determinación *Entre un programa y su espacio *Reserva de espacio de almacenamiento. *Entre un subprograma y sus *Pasaje de parámetros parámetros .

6 Binding estático Binding Dinámico 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)

7 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.

8 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.

9 TIPOS DEFINIDOS POR EL USUARIO TIPOS ABSTRACTOS DE DATOS
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;

10 LIGADURA DINAMICA DE TIPOS (APL SNOBOL)
A5 (variable simple) A (etiqueta) A (arreglo unidimensional)

11 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).

12 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).

13 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[]). code memory(c) data memory(d) Activation record for global data Activation record for unit 1 Activation record for unit 2 Activation record for unit n ip Code segment for unit 1 Code segment for unit 2 unit 3 unit n

14 COMPILACION -> LENGUAJE MÁQUINA
LINKADO -> ASIGNACIÓN DE MEMORIA CARGA -> CARGA DE MEMORIA (EJS. EN SIMPLESEM)

15 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

16 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]

17 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 MAIN ip:=&c[P,0] ip:=n X RETURN  ip:=d[P,0] ip:=D[m] 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. 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. 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

18 Descripción en términos de funcionamiento de SIMPLESEM
D(3)=ip+2 Ip=5 Ip=3 noop halt D(4)=5 D(0)=6 D(5)=D(0)+D(4) Ip=D(3) common I Return Point main main J ip Return Point x K J Data memory x Code memory

19 D(3)=Ip+2 Ip=5 Ip=3 noop halt D(4)=5 D(0)=6 D(5)=D(0)+D(4) Ip=D(3)
common 2 I 5 Return Point main ip J Return Point x K J Data memory Code memory

20 D(3)=ip+2 Ip=5 Ip=3 Noop Halt D(4)=5 D(0)=6 D(5)=D(0)+D(4) Ip=D(3)
common 6 2 5 I 7 Return Point main ip J Return Point x K J Data memory Code memory

21 PROGRAMA LIGADURA LINKEDITADO INTEGER I,J I <-> d[COMMON,0] I <-> D[0] COMMON I I <-> d[MAIN,1] I <-> D[2] CALL X 10 <-> c[MAIN,3] 10 <-> C[3] GOTO 10 X <-> c[X,0] X <-> D[5]

22 SOUBROTINE X I<-> d[COMMON,0] I <-> D[0] INTEGER K,J K<-> d[X,1] K <-> D[4] COMMON I J<-> d[X,2] J <-> D[5] K=5 I=6 J=1+K RETURN END

23 common D(3)=ip+2 Ip=5 Ip=3 Noop halt D(4)=5 D(0)=6 D(5)=D(0)+D(4) Ip=D(3) 5 2 11 2 main ip x Data memory Code memory

24 2)Estructura del lenguaje ALGOL (Basado en Pila)
unit A unit B unit C unit D end D end B end C A unit E unit F E B end F F G C unit G end E end G end A D

25 Unidades de ejecución  Disjuntas  Anidadas Problemas básicos  Recursividad  Variables dinámicas: type T=array [m,n] of real

26 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.

27 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 FGFGFEA

28 Genera la siguiente secuencia SIMPLESEM
F G F G Current F Free

29 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

30 ESTRUCTURA DE UN PROGRAMA APL
Main program Subprogram SUB Function subprogram FUN


Descargar ppt "ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION"

Presentaciones similares


Anuncios Google