310 likes | 664 Views
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
E N D
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) 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
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 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 .
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[]). code memory(c) data memory(d) ip
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] • 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
Descripción en términos de funcionamiento de SIMPLESEM common I Return Point main main J 0 ip Return Point x K J Data memory x Code memory
common I 5 Return Point main J ip Return Point x K J Data memory Code memory
common I 7 Return Point main ip J Return Point x K J Data memory Code memory
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]
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
common 2 main ip x Data memory Code memory
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 D end A
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