Diseño de compiladores. Organización de memoria. Organización de memoria. Organización de memoria. Zona de código 04/05/2014 ORGANIZACIÓN DE MEMORIA

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Diseño de compiladores. Organización de memoria. Organización de memoria. Organización de memoria. Zona de código 04/05/2014 ORGANIZACIÓN DE MEMORIA"

Transcripción

1 Diseño de compiladores Gestión de la memoria / Generación de código ORGANIZACIÓN DE MEMORIA Organización de memoria Depende del tipo de lenguaje (declarativos, imperativos), del compilador y del sistema operativo Organización de memoria El primer responsable de la gestión de la memoria es el sistema operativo Al ejecutar un programa, el loader del sistema operativo, asigna la cantidad de memoria y carga el código a ejecutar en la zona de código Se debe detectar una posible colisión entre el heap y la pila Se puede abortar el programa o aumentar la cantidad de memoria asignada Organización de memoria En sistemas con paginación de memoria, el esquema anterior puede estar particionado y desparramado entre la memoria real y virtual IMPORTANTE: Toda referencia a una posición de memoria dentro del código debe ser relativa a la posición asignada al proceso por el sistema operativo Para esto se utiliza un registro base con la dirección a considerar Zona de código Contiene las instrucciones del programa a ejecutar Están escritas en código máquina Consiste en la traducción a código máquina de todos los procedimientos y funciones del programa El tamaño del código y su contenido se calculan en tiempo de compilación 1

2 Zona de código Zona de código El archivo ejecutable contiene todo este código Además contiene información relativa al tamaño de los diferentes bloques de memoria que se necesitan Esta información es utilizada para cargar el programa en memoria para su ejecución Normalmente el código se considera un solo bloque compacto Algunos compiladores, por el contrario particionan el código en partes denominadas overlays Son usados cuando la memoria disponible es menor que el tamaño del programa Zona de código Los overlays son secciones de código que se cargan en memoria de manera independiente A lo largo del tiempo, dos overlays pueden haber ocupado la misma zona de memoria El compilador debe decidir cómo agrupar las funciones en overlays de manera que no se realicen demasiadas cargas de código a lo largo de la ejecución Memoria estática Es la forma más sencilla de gestión de la memoria El compilador asigna una posición de memoria fija a cada variable que se utilice en el programa Era la única forma de gestión de memoria en los primeros compiladores (FORTRAN) Memoria estática Actualmente sólo se utiliza para almacenar las constantes y variables globales del programa La asignación de memoria se realiza en tiempo de compilación de forma consecutiva, teniendo en cuenta el tamaño de la variable a asignar La dirección asociada a cada variable es constante y relativa al comienzo del segmento de datos (DS) 2

3 Características del compilador No pueden manejar funciones recursivas, ya que estas requieren varias instancias de cada variable de la función Cada función tiene asignado un registro de activación que contiene los parámetros, variables locales y variables temporales de la función La memoria estática contiene las variables globales y la secuencia de registros de activación de cada función Memoria tipo pila Se introdujo para manejar lenguajes estructurados con llamadas recursivas Las funciones recursivas requieren manejar diferentes instancias del registro de activación, es decir, del conjunto de valores de sus variables en cada ejecución de la función Memoria tipo pila Estos registros de activación se almacenan en forma de pila, de manera que el registro de la cima de la pila corresponde a la función en ejecución Al terminar la ejecución de una función debe desapilarse el registro de activación y pasar el control a la función que se encuentre en la cima de la pila Memoria tipo pila Al traspasar el control de una función a otra es necesario almacenar el estado de la máquina, es decir, el conjunto de valores de los registros del procesador Se debe almacenar la dirección del comienzo del registro de activación de la función llamante (Frame Pointer) Esta información se añade al contenido del registro de activación de cada función 3

4 Memoria tipo pila Protocolo de llamada El procesador maneja dos registros especiales Stack Pointer (SP): dirección del tope de la pila Frame Pointer (FP): dirección base del registro de activación de la función activa Se reserva espacio para el valor devuelto Se almacena el valor de los parámetros que se pasan a la función llamada Se almacena el valor de la dirección de retorno Se almacena el estado de la máquina (incluye SP y FP) Se pasa el control a la función llamada Comienza la ejecución del código de la función llamada Protocolo de retorno Se coloca el valor devuelto en el espacio reservado (si existe) Se restaura el contenido del estado de la máquina. Esto modifica el valor de FP y SP Provoca la liberación de la memoria ocupada por el registro de activación de la función llamada Se restaura el valor de la dirección de retorno Protocolo de retorno Se devuelve el control a la función que llama Se almacena el valor devuelto en la variable local o temporal adecuada GENERACIÓN DE CÓDIGO 4

5 Introducción Introducción La fase final de nuestro modelo de compilador es el generador de código Toma por entrada una RI del fuente y produce su equivalente en código objeto Las técnicas que veremos son independientes de si se realiza o no optimización Los requerimientos que, tradicionalmente, se imponen en un generador de código son muy demandantes El código generado debe ser correcto y de alta calidad (debe hacer uso efectivo de los recursos de la máquina objeto) El generador, además, debe ser eficiente Introducción El problema de generar código óptimo es no decidible Son problemas NP completos No hay algoritmos polinomiales que resuelvan el problema En la práctica, se utilizan heurísticas que generan código bueno (aunque probablemente no óptimo) Aspectos generales Entrada al generador de código (RI) Programas objeto Administración de memoria Selección de instrucciones Adjudicación de registros Elección de orden de evaluación Entrada al generador de código La entrada consiste en la RI del código fuente, producida por el frontend, junto con la información de la tabla de símbolos La TS se utiliza para determinar las direcciones en tiempo de ejecución de los objetos de datos denotados por los nombres en la RI Asumimos que la RI es de suficiente bajo nivel con tipos de datos que se pueden mapear razonablemente a la arquitectura objeto Entrada al generador de código Asumimos que el chequeo de tipos ya fue realizado, con la adecuada inserción de operadores de cambio de tipos, y demás Asumimos que no hay errores semánticos obvios (Ej., intentar indizar un arreglo con un punto flotante) 5

6 Entrada al generador de código Esta fase se basa en la asunción de que la RI no tiene errores (aunque en algunos compiladores, el chequeo se realiza a la vez que la generación de código) Código objeto La salida del generador es el código o programa objeto, el cual puede tomar distintas formas: código máquina absoluto código máquina reubicable código assembler Código objeto Producir código máquina absoluto como salida conlleva la ventaja de que puede ser ubicado en un lugar fijo de memoria y ejecutado inmediatamente Código reubicable (también llamado módulo objeto) permite tener módulos que se compilan por separado. Luego se unen (linking) y se cargan Código objeto En este caso se gana mucha flexibilidad en función del trabajo que conlleva la unión y carga. Si la máquina objeto no se hace cargo de la reubicación, el compilador debe producir información explícita para el linker Código objeto Administración de memoria Finalmente, producir código assembler como salida facilita el proceso de compilación. Podemos generar instrucciones simbólicas y usar las macros de assembler como ayudas. Finalmente, facilita la optimización a mano del código generado. El precio es que aparece una etapa final de ensamblado Consiste en determinar la posición de memoria en la que los diferentes símbolos del programa almacenan la información Depende de la estrategia utilizada para la gestión de memoria, el mecanismo puede variar 6

7 Selección de instrucciones Selección de instrucciones La naturaleza del conjunto de instrucciones de la máquina objeto, determina la dificultad de la selección de instrucciones La uniformidad y completitud del conjunto de instrucciones son factores muy importantes. Si la máquina objeto no soporta cada tipo de datos de forma uniforme, entonces se necesitan estrategias alternativas Si no nos interesa la eficiencia, para cada tipo de sentencia en C3D podemos diseñar un esqueleto de código que muestra el código objeto a generar para esa construcción Ej.: x:=y+z MOV Y, R0 ADD Z, R0 MOV R0, X Esto genera código pobre Selección de instrucciones Por ejemplo: a := b + c d := a + e Se traduce a MOV b, R0 ADD c, R0 MOV R0, a redundante? MOV a, RO redundante? ADD e, R0 MOV R0, d Selección de instrucciones La calidad del código generado se mide en función de Tamaño Velocidad En función de la variedad de instrucciones uno puede seleccionar la instrucción más performante (ej. INC vs MOV - ADD - MOV). Para los casos no triviales, es un problema muy complejo. Asignación de registros Operar sobre registros es más rápido y eficiente que operar sobre memoria Por ello, la adjudicación eficiente de registros tiene un gran impacto en la performance Asignación de registros El uso de registros puede dividirse en dos subproblemas: Durante la reserva de registros (allocation), se seleccionan el conjunto de variables que vivirá en registros en un punto del programa. Durante la (posterior) asignación de registros (assignation), se elige el registro específico para cada variable. 7

8 Orden de evaluación El orden en que algunas computaciones se llevan a cabo puede afectar la eficiencia del código objeto Algunos ordenes requieren menos registros para almacenar valores intermedios Seleccionar el orden óptimo es también NPcompleto 8

Tema 6 Organización y gestión de la memoria

Tema 6 Organización y gestión de la memoria Departamento de Tecnologías de la Información Tema 6 Organización y gestión de la memoria Ciencias de la Computación e Inteligencia Artificial Índice 6.1 Organización de la memoria en tiempo de ejecución

Más detalles

Los registros son la memoria principal de la computadora. Existen diversos registros de propósito general y otros de uso exclusivo.

Los registros son la memoria principal de la computadora. Existen diversos registros de propósito general y otros de uso exclusivo. Unidad IV: Generación de código objeto 4.1 Registro Los registros son la memoria principal de la computadora. Existen diversos registros de propósito general y otros de uso exclusivo. Algunos registros

Más detalles

FASES DE UN COMPILADOR

FASES DE UN COMPILADOR FASES DE UN COMPILADOR PROGRAMA FUENTE analizador léxico analizador sintáctico administrador analizador semántico manejador de la tabla generador de código intermedio de errores de símbolos optimizador

Más detalles

Compiladores: Ambientes para Ejecución. Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. María Constanza Pabón

Compiladores: Ambientes para Ejecución. Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. María Constanza Pabón Compiladores: Ambientes para Ejecución Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. María Constanza Pabón Procedimientos Definición de un Procedimiento: es una declaración

Más detalles

Tema 8 Gestión de la memoria en tiempo de ejecución.

Tema 8 Gestión de la memoria en tiempo de ejecución. Traductores, Compiladores e Intérpretes 1 Tema 8 Gestión de la memoria en tiempo de ejecución. S Organización de la memoria en tiempo de ejecución. Cuando un programa se ejecuta sobre un sistema operativo

Más detalles

Sistemas Operativos. Curso 2017 Administración de memoria I

Sistemas Operativos. Curso 2017 Administración de memoria I Sistemas Operativos Curso 2017 Administración de memoria I Agenda Introducción. Conceptos básicos. Preparación de un programa para ejecutar. Áreas de la memoria de un proceso. Asociación de direcciones.

Más detalles

Compiladores: Introducción

Compiladores: Introducción Compiladores: Introducción Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. Gloria Inés Alvarez V. (galvarez@puj.edu.co) Basado en [Aho, 2007, chp. 1] Qué es un COMPILADOR?

Más detalles

Compiladores: Generación de Código. Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. María Constanza Pabón

Compiladores: Generación de Código. Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. María Constanza Pabón Compiladores: Generación de Código Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. María Constanza Pabón Generación de Código Representación Intermedia Tabla de Símbolos

Más detalles

Gestión de la memoria en tiempo de ejecución

Gestión de la memoria en tiempo de ejecución Apéndice A Gestión de la memoria en tiempo de ejecución A1. Organización de la memoria en tiempo de ejecución Las técnicas de gestión de la memoria durante la ejecución del programa difieren de unos lenguajes

Más detalles

Unidad 2. Introducción Lenguajes y Compiladores

Unidad 2. Introducción Lenguajes y Compiladores Unidad 2 Introducción Lenguajes y Compiladores Principal material bibliográfico utilizado Compiladores Principios, técnicas y herramientas. Aho y Ullman. Addison Wesley. www.jorgesanchez.net www.iqcelaya.itc.mx/~vicente/programacion/tradcomp.pdf

Más detalles

Compiladores e intérpretes Introducción

Compiladores e intérpretes Introducción Introducción Profesor: Eridan Otto Introducción Perspectiva histórica Motivación Definiciones Componentes y fases de un compilador 1 Introducción Definiciónes básicas Traductor: desde un punto de vista

Más detalles

Lenguajes de Programación I

Lenguajes de Programación I Lenguajes de Programación I Subrutinas - Pasaje de Ernesto Hernández-Novich Copyright c 2006-2010 Subrutinas Mecanismo principal para abstracción de control. Asocian un nombre a una secuencia

Más detalles

Diseño de Compiladores I. Estructura General de un Compilador

Diseño de Compiladores I. Estructura General de un Compilador Diseño de Compiladores I Estructura General de un Compilador PROGRAMA FUENTE COMPILADOR SALIDA Mensajes de Error 2 Un compilador es un programa que traduce un programa escrito en lenguaje fuente y produce

Más detalles

Arquitectura de Computadores II Clase #7

Arquitectura de Computadores II Clase #7 Arquitectura de Computadores II Clase #7 Facultad de Ingeniería Universidad de la República Instituto de Computación Curso 2009 Veremos Memoria virtual Resumen de ideas para mejorar performance 1 Recordemos:

Más detalles

Arquitectura de Computadoras

Arquitectura de Computadoras Arquitectura de Computadoras Clase 6 RISC Computadoras de repertorio reducido de instrucciones Historia de evolución (1) El concepto de familia: Introducido por IBM en su System/360 en 1964. DEC PDP-8.

Más detalles

Concepto de compilador Intérprete Fases de un Compilador Herramientas de construcción de Compiladores

Concepto de compilador Intérprete Fases de un Compilador Herramientas de construcción de Compiladores 18:55 1 2 Temas Concepto de compilador Intérprete Fases de un Compilador Herramientas de construcción de Compiladores Objetivo Que el estudiante logre conocer, comprender y manejar conceptos y técnicas

Más detalles

Lenguaje de programación. COMPILADORES Unidad I: Introducción al proceso de compilación

Lenguaje de programación. COMPILADORES Unidad I: Introducción al proceso de compilación COMPILADORES Unidad I: Introducción al proceso de compilación Flor Prof. Flor Narciso GIDyC-Departamento de Computación LABSIULA-Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de

Más detalles

Procesadores de lenguaje Tema 8 Generación de código y optimización

Procesadores de lenguaje Tema 8 Generación de código y optimización Procesadores de lenguaje Tema 8 Generación de código y optimización Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Tipos de código objeto Operaciones básicas en la generación

Más detalles

Facultad de Ingeniería Industrial y de Sistemas v2.0 MA781U GESTION DE MEMORIA

Facultad de Ingeniería Industrial y de Sistemas v2.0 MA781U GESTION DE MEMORIA GESTION DE MEMORIA Preparado por: Angel Chata Tintaya (angelchata@hotmail.com) Resumen La memoria es el lugar donde residen procesos y datos de los programas del usuario y del sistema operativo; se debe

Más detalles

Arquitectura de Computadores II Clase #7

Arquitectura de Computadores II Clase #7 Arquitectura de Computadores II Clase #7 Facultad de Ingeniería Universidad de la República Instituto de Computación Curso 2010 Veremos Memoria virtual 1 Recordemos: Jerarquía de Memoria Registros Instr.

Más detalles

Arquitectura de Computadores II Clase #7

Arquitectura de Computadores II Clase #7 Arquitectura de Computadores II Clase #7 Facultad de Ingeniería Universidad de la República Instituto de Computación Curso 2010 Veremos Memoria virtual Recordemos: Jerarquía de Memoria Nivel Superior Registros

Más detalles

Notas de curso de Programación y estructuras de datos. Memoria dinámica

Notas de curso de Programación y estructuras de datos. Memoria dinámica Notas de curso de Programación y estructuras de datos. Memoria dinámica Nikos Mylonakis, Fernando Orejas nicos@lsi.upc.edu Dept. Llenguatges i Sistemes Informátics Universitat Politécnica de Catalunya

Más detalles

Gestión de Memoria. Gestión de Memoria. Requisitos de Gestión de Memoria

Gestión de Memoria. Gestión de Memoria. Requisitos de Gestión de Memoria Gestión de Memoria Gestión de Memoria Dividir la memoria para alojar múltiples procesos La memoria necesita ser asignada eficientemente para alojar tantos procesos como sea posible Capítulo 7 Requisitos

Más detalles

Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas

Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas Análisis semático c 2001 José Fortes Gálvez p.1 Análisis?... semántico? La semántica corresponde al significado asociado

Más detalles

Análisis de algoritmos

Análisis de algoritmos Tema 02: Complejidad de los algoritmos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom 1 Contenido Algoritmo Algoritmo vs. Proceso Computacional

Más detalles

Procesadores de lenguaje Tema 6 La tabla de símbolos

Procesadores de lenguaje Tema 6 La tabla de símbolos Procesadores de lenguaje Tema 6 La tabla de símbolos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen La tabla de símbolos. Requerimientos de información. Diseño de la tabla de

Más detalles

COLEGIO DE ESTUDIOS DE POSGRADO DE LA CIUDAD DE MÉXICO

COLEGIO DE ESTUDIOS DE POSGRADO DE LA CIUDAD DE MÉXICO COLEGIO DE ESTUDIOS DE POSGRADO DE LA CIUDAD DE MÉXICO ELABORO: ALEJANDRA FUERTES FRANCISCO TEMA: LENGUAJES DE PROGRAMACIÓN INTRODUCCIÓN Un lenguaje de programación es un conjunto de instrucciones que

Más detalles

Facultad de Ingeniería Industrial y de Sistemas v2.0 MA781U MEMORIA VIRTUAL

Facultad de Ingeniería Industrial y de Sistemas v2.0 MA781U MEMORIA VIRTUAL MEMORIA VIRTUAL Preparado por: Angel Chata Tintaya (angelchata@hotmail.com) Resumen Para un aprovechamiento eficiente del CPU y los recursos de E/S se requiere mantener en el sistema operativo la mayor

Más detalles

Procesadores de lenguaje Tema 6 La tabla de símbolos

Procesadores de lenguaje Tema 6 La tabla de símbolos Procesadores de lenguaje Tema 6 La tabla de símbolos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen La tabla de símbolos. Requerimientos de información. Diseño de la tabla de

Más detalles

ADMINISTRACION DE LA MEMORIA. En memoria 1 solo proceso Desventajas:

ADMINISTRACION DE LA MEMORIA. En memoria 1 solo proceso Desventajas: ADMINISTRACION DE LA MEMORIA Función del Administrador de Memoria Registra qué parte de memoria está libre y ocupada Asigna y libera espacio en memoria a los procesos Administra el intercambio entre la

Más detalles

Construyendo Programas más Complejos

Construyendo Programas más Complejos Arquitectura de Ordenadores Construcciones de Alto Nivel en Ensamblador Abelardo Pardo abel@it.uc3m.es Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Construyendo Programas más

Más detalles

Tema 1. Introducción

Tema 1. Introducción Departamento de Tecnologías de la Información Tema 1 Introducción Ciencias de la Computación e Inteligencia Artificial Índice 1.1 Conceptos 1.2 Un poco de historia 1.3 Estructura de un compilador 1.4 Teoría

Más detalles

Para cada Instrucción del µp hay un Mnemónico. Existen casi tantos lenguajes ensamblador como µps.

Para cada Instrucción del µp hay un Mnemónico. Existen casi tantos lenguajes ensamblador como µps. 7-1 Para cada Instrucción del µp hay un Mnemónico Ej: 01 000 001 LD B, C Existen casi tantos lenguajes ensamblador como µps. Ejemplo: LD A, (OPER1) LD B, A LD A, (OPER2) ADD A, B LD (SUMA), A Qué son OPER1,

Más detalles

NOMBRE DEL CURSO: Organización de Lenguajes y Compiladores 2 CÓDIGO: 781 CRÉDITOS: 5 ÁREA A LA QUE PERTENECE: POST-REQUISITO:

NOMBRE DEL CURSO: Organización de Lenguajes y Compiladores 2 CÓDIGO: 781 CRÉDITOS: 5 ÁREA A LA QUE PERTENECE: POST-REQUISITO: UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERÍA ESCUELA DE CIENCIAS NOMBRE DEL CURSO: Organización de Lenguajes y Compiladores 2 CÓDIGO: 781 CRÉDITOS: 5 ESCUELA: Ciencias y Sistemas ÁREA

Más detalles

Introducción al Diseño de Compiladores. Año

Introducción al Diseño de Compiladores. Año Introducción al Diseño de Compiladores Año 2003 1 BIBLIOGRAFÍA [AHO] Compilers. Principles, Techniques, and Tools Aho, Sethi; Adisson-Wesley 1986 [TEU] Compiladores: Conceptos fundamentales. Teufel ; Addison

Más detalles

Nombre del estudiante: Gustavo Antonio González Morales. Nombre del trabajo: Tarea 2. Investigación sobre Paginación y Segmentacion.

Nombre del estudiante: Gustavo Antonio González Morales. Nombre del trabajo: Tarea 2. Investigación sobre Paginación y Segmentacion. Nombre del estudiante: Gustavo Antonio González Morales. Nombre del trabajo: Tarea 2. Investigación sobre Paginación y Segmentacion. Fecha de entrega: 10 de Mayo de 2013. Campus: Villahermosa. Carrera:

Más detalles

Capítulo 9 Gestión de la memoria en tiempo de ejecución

Capítulo 9 Gestión de la memoria en tiempo de ejecución Java a tope: Traductores y compiladores con Lex/Yacc, JFlex/Cup y JavaCC Capítulo 9 Gestión de la memoria en tiempo de ejecución 9.1 Organización de la memoria durante la ejecución Como ya se comentó en

Más detalles

Tema 3. Gestión de la memoria

Tema 3. Gestión de la memoria Tema 3. Gestión de la memoria Competencias: Comprender las funciones que debe desempeñar todo mecanismo que gestiona la memoria, identificando las ventajas e inconvenientes de los distintos esquemas de

Más detalles

Elementos para el estudio de los compiladores

Elementos para el estudio de los compiladores Ing. Adrian Ulises Mercado Martínez Enero 30, 2015 Ing. Adrian Ulises Mercado Martínez Enero 30, 2015 1 / 51 1 Objetivo 2 Historia 3 Traductor Tipo de Traductores Compilador Intérprete Máquina Virtual

Más detalles

Lenguajes de programación

Lenguajes de programación Introducción Lenguajes de programación Primera generación: lenguajes máquina Los programas se escriben en código binario 000001011010000000000000 Segunda generación: lenguajes simbólicos Cada instrucción

Más detalles

Tema 05: Tablas hash. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom

Tema 05: Tablas hash. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom Tema 05: Tablas hash M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Función

Más detalles

Lógica: Algoritmo: Archivo: Base de datos: Bit:

Lógica: Algoritmo: Archivo: Base de datos: Bit: Lógica: Algoritmo: Archivo: Base de datos: Bit: 1 LÓGICA: Es una secuencia de operaciones realizadas por el hardware o por el software. Lógica del hardware, Son los circuitos y Chips que realizan las operaciones

Más detalles

Información general. Diseño de compiladores. Información general. Organización del curso 22/03/2015. Docente. Correo electrónico. Pagina web del curso

Información general. Diseño de compiladores. Información general. Organización del curso 22/03/2015. Docente. Correo electrónico. Pagina web del curso Información general Diseño de compiladores Introducción y organización del curso Docente Pablo Garbusi Correo electrónico pgarbusi@fing.edu.uy Pagina web del curso http://www.fing.edu.uy/inco/curso/compil

Más detalles

Fundamentos de Sistemas Operativos Licenciatura en Administración de Tecnologías de Información y Comunicaciones

Fundamentos de Sistemas Operativos Licenciatura en Administración de Tecnologías de Información y Comunicaciones Fundamentos de Sistemas Operativos Licenciatura en Administración de Tecnologías de Información y Comunicaciones Rafael Vázquez Pérez Unidad 2 Administración de la Memoria Asignación de memoria paginada

Más detalles

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Tema 2 Conceptos básicos de programación. Fundamentos de Informática Tema 2 Conceptos básicos de programación Fundamentos de Informática Índice Metodología de la programación Programación estructurada 2 Pasos a seguir para el desarrollo de un programa (fases): Análisis

Más detalles

ANÁLISIS SEMÁNTICO LA TABLA DE SÍMBOLOS

ANÁLISIS SEMÁNTICO LA TABLA DE SÍMBOLOS Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

GESTION DE LA MEMORIA

GESTION DE LA MEMORIA GESTION DE LA MEMORIA SISTEMAS OPERATIVOS Generalidades La memoria es una amplia tabla de datos, cada uno de los cuales con su propia dirección Tanto el tamaño de la tabla (memoria), como el de los datos

Más detalles

Unidad II: Análisis semántico

Unidad II: Análisis semántico Unidad II: Análisis semántico Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico

Más detalles

Funciones y Datos en Intel 8086

Funciones y Datos en Intel 8086 y Datos en Intel 8086 Departamento de Arquitectura 1 1 Instituto de Computación Facultad de Ingeniería Universidad de la República Arquitectura de Computadoras, 2016 Temas 1 2 Tipos atómicos Tipos estructurados

Más detalles

GENERACIÓN DE CÓDIGO INTERMEDIO EJEMPLOS PARA DISTINTAS ESTRUCTURAS DE DATOS

GENERACIÓN DE CÓDIGO INTERMEDIO EJEMPLOS PARA DISTINTAS ESTRUCTURAS DE DATOS Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

Estructura de Datos y de la Información. Tema 1: Gestión dinámica de la memoria. Departamento de Computación Universidade da Coruña, España.

Estructura de Datos y de la Información. Tema 1: Gestión dinámica de la memoria. Departamento de Computación Universidade da Coruña, España. Estructura de Datos y de la Información Tema 1: Gestión dinámica de la memoria Laboratorio de Investigación y desarrollo en Inteligencia Artificial Departamento de Computación Universidade da Coruña, España

Más detalles

Lenguajes de Programación

Lenguajes de Programación Lenguajes de Programación Entidades, atributos y ligaduras Ma. Laura Cobo Departamento de Ciencias e Ingeniería de la Computación 2018 Prof. Ma. Laura Cobo Página 1 Entidades Nombres o identificadores:

Más detalles

Compiladores e Intérpretes Generación de Código Máquina e Intérpretes

Compiladores e Intérpretes Generación de Código Máquina e Intérpretes 1 Compiladores e Intérpretes Generación de Código Máquina e Intérpretes Sebastian Gottifredi 2017 Repaso 2 Repaso Para entender y controlar la estructura de un programa fuente hay que analizar si sigue

Más detalles

TEMA 1. PROGRAMACIÓN DE UN COMPUTADOR

TEMA 1. PROGRAMACIÓN DE UN COMPUTADOR Tema 1. Programación de un computador TEMA 1. CIÓN DE UN COMPUTADOR 1. CONCEPTO DE 2. LENGUAJES DE CIÓN 2.1. LENGUAJE MÁQUINA 2.2. LENGUAJE ENSAMBLADOR 2.3. LENGUAJE DE ALTO NIVEL 3. ALGORITMOS. REPRESENTACIÓN

Más detalles

Tema 7. Generación de código

Tema 7. Generación de código Departamento de Tecnologías de la Información Tema 7 Generación de código Ciencias de la Computación e Inteligencia Artificial Índice 7.1 Visión general 7.2 Código de tres direcciones 2 Índice 7.1 Visión

Más detalles

2.2 Nombres, Ligado y Ámbito

2.2 Nombres, Ligado y Ámbito 2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el

Más detalles

Índice general 7. Presentación 15

Índice general 7. Presentación 15 ÍNDICE GENERAL Índice general 7 Presentación 15 1. Introducción 19 1.1. Antecedentes históricos de la computación................... 19 1.2. Definiciones previas............................... 24 1.3.

Más detalles

Lenguajes y Compiladores Introducción. Compiladores 1

Lenguajes y Compiladores Introducción. Compiladores 1 Facultad de Ingeniería de Sistemas Lenguajes y Introducción 1 Objetivos Conocer los fundamentos de construcción de en todas sus fases, presentando los conceptos básicos, definiciones formales, técnicas

Más detalles

Procesos y Memoria. Administración de Memoria 26/10/2010 SISTEMAS OPERATIVOS

Procesos y Memoria. Administración de Memoria 26/10/2010 SISTEMAS OPERATIVOS SISTEMAS OPERATIVOS Administración de Memoria Organización Lógica de la Memoria La memoria principal es un arreglo de palabras o bytes, cada uno de los cuales tiene una dirección (espacio de direcciones).

Más detalles

Granularidad y latencia

Granularidad y latencia Niveles de paralelismo y latencias de comunicación Niveles de paralelismo. Granularidad o tamaño de grano. Latencia de comunicación. Particionado de los programas. Empaquetado de granos. Planificación

Más detalles

Memoria Dinámica en C++

Memoria Dinámica en C++ Memoria Dinámica en C++ Algoritmos y Estructuras de Datos II DC-FCEyN-UBA 26 de Agosto de 2015 AED2 (DC-FCEyN-UBA) Memoria Dinámica en C++ 26 de Agosto de 2015 1 / 46 Repaso: Qué es una variable? Matemática:

Más detalles

Unidad III: Introducción a la Programación

Unidad III: Introducción a la Programación Unidad III: Introducción a la Programación 3.1 Características del lenguaje de programación Un lenguaje de programación es un idioma artificial diseñado para expresar procesos que pueden ser llevadas a

Más detalles

Tema: Generación de código intermedio

Tema: Generación de código intermedio Compiladores. Guía 10 1 Tema: Generación de código intermedio Objetivos Específicos Conocer las características y principal función de un generador de código. Analizar el funcionamiento, entrada y salida

Más detalles

Arquitectura de Computadoras

Arquitectura de Computadoras 4-1 Arquitectura de Computadoras Tema 4: Arquitectura del Set de Instrucciones Eduardo Daniel Cohen dcohen@arnet.com.ar http://www.herrera.unt.edu.ar/arqcom 4-2 Arquitectura del Set de Instrucciones Indice

Más detalles

Sistemas operativos: una visión aplicada. Capítulo 4 Gestión de memoria

Sistemas operativos: una visión aplicada. Capítulo 4 Gestión de memoria Sistemas operativos: una visión aplicada Capítulo 4 Gestión de memoria Contenido Objetivos del sistema de gestión de memoria Modelo de memoria de un proceso Esquemas de memoria basados en asignación contigua

Más detalles

Tema V Generación de Código

Tema V Generación de Código Tema V Generación de Código Una vez que se ha realizado la partición HW/SW y conocemos las operaciones que se van a implementar por hardware y software, debemos abordar el proceso de estas implementaciones.

Más detalles

Programación de Ordenadores

Programación de Ordenadores Programación de Ordenadores Ingeniería Química David Pelta Depto de Ciencias de la Computación e I.A. Universidad de Granada Índice Resolución de Problemas con Ordenadores Algoritmo Metodología de la programación

Más detalles

Nombres, Ligaduras, Chequeo de Tipos y Alcance. Luis Garreta (Basados en el libro de Robert Sebesta)

Nombres, Ligaduras, Chequeo de Tipos y Alcance. Luis Garreta (Basados en el libro de Robert Sebesta) Nombres, Ligaduras, Chequeo de Tipos y Alcance Luis Garreta lgarreta@unicauca.edu.co (Basados en el libro de Robert Sebesta) 1 Nombres, Ligaduras, Chequeo de Tipos y Alcance Nombres Variables El concepto

Más detalles

Lenguajes. Ciclo de desarrollo. Cód. Máquina Lenguajes alto nivel Lenguaje ensamblador 6-2. Introducción a los microprocesadores IIE FI - UDELAR

Lenguajes. Ciclo de desarrollo. Cód. Máquina Lenguajes alto nivel Lenguaje ensamblador 6-2. Introducción a los microprocesadores IIE FI - UDELAR 6-1 Lenguajes Cód. Máquina Lenguajes alto nivel Lenguaje ensamblador Ciclo de desarrollo 6-2 Nivel de abstracción bajo ceros y unos. Es lo único que entiende el procesador. Objetivo: código de máquina

Más detalles

Tema 3 SUBRUTINAS. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía

Tema 3 SUBRUTINAS. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía Tema 3 SUBRUTINAS ÍNDICE Definición e instrucciones básicas Soporte para el tratamiento de subrutinas (ejecución de la subrutina y gestión del bloque de activación) Interrupciones vs llamadas a procedimiento

Más detalles

Unidad VIII Generación de código intermedio. M.C. Juan Carlos Olivares Rojas

Unidad VIII Generación de código intermedio. M.C. Juan Carlos Olivares Rojas Unidad VIII Generación de código intermedio M.C. Juan Carlos Olivares Rojas Agenda 8.1 Lenguaje máquina. 8.1.1 Características. 8.1.2 Direccionamiento. 8.2 Lenguaje ensamblador. 8.2.1 Características.

Más detalles

NOMBRE DEL CURSO: Organización de Lenguajes y Compiladores 2 CÓDIGO: 781 CRÉDITOS: 5 ÁREA A LA QUE PERTENECE:

NOMBRE DEL CURSO: Organización de Lenguajes y Compiladores 2 CÓDIGO: 781 CRÉDITOS: 5 ÁREA A LA QUE PERTENECE: UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA EN CIENCIAS Y SISTEMAS NOMBRE DEL CURSO: Organización de Lenguajes y Compiladores 2 CÓDIGO: 781 CRÉDITOS: 5 ESCUELA:

Más detalles

Procesadores de lenguaje Tema 1 Introducción a los compiladores

Procesadores de lenguaje Tema 1 Introducción a los compiladores Procesadores de lenguaje Tema 1 Introducción a los compiladores Salvador Sánchez, Daniel Rodríguez Departamento de Ciencias de la Computación Universidad de Alcalá Resumen del tema Traductores Estructura

Más detalles

Tema 2 Introducción a la Programación en C.

Tema 2 Introducción a la Programación en C. Tema 2 Introducción a la Programación en C. Contenidos 1. Conceptos Básicos 1.1 Definiciones. 1.2 El Proceso de Desarrollo de Software. 2. Lenguajes de Programación. 2.1 Definición y Tipos de Lenguajes

Más detalles

INFORME MEMORIA CACHE Y MEMORIA VIRTUAL.

INFORME MEMORIA CACHE Y MEMORIA VIRTUAL. AIEP PROGRAMACIÓN COMPUTACIONAL FUNDAMENTOS DE PROGRAMACIÓN INFORME MEMORIA CACHE Y MEMORIA VIRTUAL. Por:Diego Menéndez Introducción. Ante la inmensa velocidad de los procesadores que a medida del tiempo

Más detalles

Sistemas Operativos. Curso 2016 Administración de memoria II

Sistemas Operativos. Curso 2016 Administración de memoria II Sistemas Operativos Curso 2016 Administración de memoria II Agenda Memoria Virtual. Paginación. Segmentación. Segmentación con paginación. Sistemas Operativos Curso 2016 Administración de memoria II 2/35

Más detalles

Un. VIII. Generación de Código Objeto

Un. VIII. Generación de Código Objeto Un. VIII. Generación de Código Objeto 8.1 Lenguaje Máquina Es el que proporciona poca o ninguna abstracción del microprocesador de un ordenador. El lenguaje máquina solo es entendible por las computadoras.

Más detalles

Cruz García Karen Ilzette González Mendoza María del Rosario Hernández Castañeda Alan Eliseo Sánchez Quiroz Sheila Mariana Varela García Tania

Cruz García Karen Ilzette González Mendoza María del Rosario Hernández Castañeda Alan Eliseo Sánchez Quiroz Sheila Mariana Varela García Tania Cruz García Karen Ilzette González Mendoza María del Rosario Hernández Castañeda Alan Eliseo Sánchez Quiroz Sheila Mariana Varela García Tania Violeta Un ensamblador es el programa que convierte un listado

Más detalles

Arquitectura de Computadoras

Arquitectura de Computadoras Arquitectura de Computadoras (Cód. 5561) 1 Cuatrimestre 2016 Dra. Dana K. Urribarri DCIC - UNS Dana K. Urribarri AC 2016 1 Memoria Virtual Dana K. Urribarri AC 2016 2 Memoria Virtual Arquitectura 32 bits:

Más detalles

Complejidad Computacional

Complejidad Computacional Complejidad Computacional MLG521 Cristobal Rojas Pamela Alvarez Departamento de Ciencias de de la Ingeniería Departamento de Ingeniería Matemática Universidad Andrés Bello MLG521 Cómo medir la dificultad

Más detalles

14/03/2018. Problemas, Algoritmos y Programas. Problemas, Algoritmos y Programas. Programas y Lenguajes. Programas y Lenguajes. Programas y Lenguajes

14/03/2018. Problemas, Algoritmos y Programas. Problemas, Algoritmos y Programas. Programas y Lenguajes. Programas y Lenguajes. Programas y Lenguajes Problemas, Algoritmos y Programas PROBLEMA Solución Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar ALGORITMO Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR PROGRAMA Problemas,

Más detalles

Introducción a los compiladores

Introducción a los compiladores Introducción a los compiladores William Cruz-Santos wdelacruzd@uaemex.mx Ingeniería en Computación Universidad Autónoma del Estado de México Unidad de Competencia I 2 de octubre de 2015 William Cruz-Santos

Más detalles

Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas

Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas Análisis semántico Tabla de símbolos, chequeo de tipos y representaciones internas Análisis semático v1.2 c 2005 José Fortes Gálvez p.1 Análisis?... semántico? La semántica corresponde al significado asociado

Más detalles

Programación de Ordenadores. Dept. Ciencias de la Computación e I.A. Universidad de Granada

Programación de Ordenadores. Dept. Ciencias de la Computación e I.A. Universidad de Granada TEMA Programación de Ordenadores Dept. Ciencias de la Computación e I.A. Universidad de Granada 1 Índice Resolución de Problemas con Ordenadores Algoritmo Metodología de la programación Lenguajes de programación

Más detalles

Sistemas de Archivos. Unidad 2 Almacenamiento y Estructuras de Archivos

Sistemas de Archivos. Unidad 2 Almacenamiento y Estructuras de Archivos Sistemas de Archivos Unidad 2 Almacenamiento y Estructuras de Archivos Introducción Archivo Un archivo es un conjunto de datos que el usuario ve como una sola unidad o entidad Sistemas de Archivos Sistema

Más detalles

TEMA 5: Subprogramas, programación modular

TEMA 5: Subprogramas, programación modular TEMA 5: Subprogramas, programación modular 5.1.-Definición de módulo. Programación modular La programación modular está basada en la técnica de diseño descendente, que como ya vimos consiste en dividir

Más detalles

Lenguajes de Programación

Lenguajes de Programación Lenguajes de Programación Entidades, atributos y ligaduras Ma. Laura Cobo Departamento de Ciencias e Ingeniería de la Computación 2017 Prof. Ma. Laura Cobo Página 1 Entidades Nombres o identificadores:

Más detalles

ARQUITECTURA DE COMPUTADORES 2º I.T.

ARQUITECTURA DE COMPUTADORES 2º I.T. Curso 2011-2012 Pág 1 de 6 1.- (4 ptos) Marque con un opción correcta de las siguientes afirmaciones. (0.4 / -0.1) 1.1 La arquitectura de Von Neumann: a) Es capaz de procesar con una misma instrucción

Más detalles

Administración de Memoria. Módulo 8. Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur

Administración de Memoria. Módulo 8. Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Administración de Memoria Módulo 8 Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Módulo 8: Administración de Memoria Base Intercambio (Swapping) Alocación Contigua

Más detalles

Tema 18: Memoria dinámica y su uso en C

Tema 18: Memoria dinámica y su uso en C Tema 18: Memoria dinámica y su uso en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1

Más detalles

Tema 14: Diseño Estructurado (Modularidad)

Tema 14: Diseño Estructurado (Modularidad) Tema 14: Diseño Estructurado (Modularidad) M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco)

Más detalles

Un. I. Introducción a la programación de sistemas

Un. I. Introducción a la programación de sistemas Un. I. Introducción a la programación de sistemas 1.1 Qué es la programación de sistemas? La programación de sistemas comprende el desarrollo de aquellos programas de computadora que tienen una fuerte

Más detalles

Administración de la memoria

Administración de la memoria Administración de la memoria 1 Administración de la Memoria Funciones: - administrar el recurso memoria realizando la asignación del mismo a los procesos - proveer mecanismos que eviten la interferencia

Más detalles

Algoritmos y Programación I. Curso Prof. Arturo Servetto

Algoritmos y Programación I. Curso Prof. Arturo Servetto 75.40 95.14 Algoritmos y Programación I Curso Prof. Arturo Servetto Propósitos del Curso Presentar al alumno un panorama general de la Informática a partir del concepto de algoritmo, que le sirva como

Más detalles

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28 Componentes Básicos InCo InCo Componentes Básicos 1 / 28 Modelo de Computación Vemos al computador como un procesador de datos. +------------+ Entrada ===> Computador ===> Salida +------------+ InCo Componentes

Más detalles

La organización lógica y física de los sistemas de archivo y sus mecanismos de acceso de archivo.

La organización lógica y física de los sistemas de archivo y sus mecanismos de acceso de archivo. La organización lógica y física de los sistemas de archivo y sus mecanismos de acceso de archivo. Se refiere a las diferentes maneras en las que puede ser organizada la información de los archivos, así

Más detalles