Banda De Guerra
platino1817 de Mayo de 2014
6.995 Palabras (28 Páginas)387 Visitas
INDICE
UNIDAD 1 5
Introducción a la programación de sistemas 5
1.1 ¿Qué es y qué estudia la programación de sistemas? 5
1.2 Herramientas desarrolladas con la teoría de programación de sistemas. 6
1.3 Lenguajes. 8
1.3.1 Lenguajes naturales. 8
1.3.2 Lenguajes artificiales. 9
1.3.3 Proceso de la comunicación. 9
1.4 Traductor y su estructura. 11
1.4.1 Ensambladores. 11
1.4.2 Compiladores. 12
1.4.3 Interpretes. 14
1.5 Generadores de código para compiladores (compilador de compilador). 14
UNIDAD 2 16
Introducción al diseño de los lenguajes de programación 16
2.1 Visión del problema. 16
2.2 Consideraciones Preliminares. 18
2.3 Objetivos y filosofías del diseño de los lenguajes de programación. 19
2.4 Diseño detallado. 20
2.5 Caso de estudio. 20
UNIDAD 3 21
Análisis Léxico 21
3.1 Introducción a los Autómatas finitos y expresiones regulares. 21
3.2 Analizador de léxico. 21
3.3 Manejo de localidades temporales de memoria (buffers). 22
3.4 Creación de tablas de símbolos. 23
3.5 Manejo de errores léxicos. 24
3.6 Generadores de código léxico: Lex y Flex. 24
UNIDAD 4 25
Análisis sintáctico 25
4.1 Introducción a las Gramáticas libres de contexto y árboles de derivación. 25
4.2 Diagramas de sintaxis. 26
4.3 Precedencia de operadores. 26
4.4 Analizador sintáctico. 26
4.4.1 Analizador descendente (LL). 26
4.4.2 Analizador ascendente (LR, LALR. 26
4.5 Administración de tablas de símbolos. 26
4.6 Manejo de errores sintácticos y su recuperación. 26
4.7 Generadores de código para analizadores sintácticos: Yacc, Bison 26
UNIDAD 5 26
Análisis semántico 26
5.1 Analizador semántico 26
5.2 Verificación de tipos en expresiones. 26
5.3 Conversión de tipos. 26
5.4 Acciones agregadas en un analizador sintáctico descendente (top-down). 26
5.5 Pila semántica en un analizador sintáctico ascendente (bottom-up). 26
5.6 Administración de la tabla de símbolos. 26
5.7 Manejo de errores semánticos. 26
UNIDAD 6 26
Generación de código intermedio 26
6.1 Lenguajes intermedios. 27
6.2 Notaciones. 27
6.2.1 Infija. 27
6.2.2 Postfija. 27
6.2.3 Prefija. 27
6.3 Representación de código intermedio. 27
6.3.1 Notación Polaca. 27
6.3.2 Codigo P. 27
6.3.3 Triplos. 27
6.3.4 Cuádruplos. 27
6.4 Esquemas de generación. 27
6.4.1 Expresiones. 27
6.4.2 Declaración de variables, constantes 27
6.4.3 Estatuto de asignación. 27
6.4.4 Estatuto condicional. 27
6.4.5 Estatuto de ciclos 27
6.4.6 Arreglos. 27
6.4.7 Funciones. 27
UNIDAD 7 27
Optimización. 27
7.1 Tipos de optimización. 27
7.1.1 Locales. 27
7.1.2 Bucles. 27
7.1.3 Globales. 27
7.1.4 De mirilla. 27
7.2 Costos. 27
7.2.1 Costo de ejecución. 27
7.2.2 Criterios para mejorar el código. 27
7.2.3 Herramientas para el análisis del flujo de datos. 27
UNIDAD 8 28
Generación de código objeto. 28
8.1 Lenguaje máquina. 28
8.1.1 Características. 28
8.1.2 Direccionamiento. 28
8.2 Lenguaje ensamblador. 28
8.2.1 Características. 28
8.2.2 Almacenamiento. 28
8.3 Registros. 28
8.3.1 Distribución. 28
8.3.2 Asignación. 28
8.4 Administración de memoria. 28
UNIDAD 1
Introducción a la programación de sistemas
1.1 ¿Qué es y qué estudia la programación de sistemas?
¿QUÉ ES?
Un sistema es un conjunto de componentes que interaccionan entre si para lograr un objetivo común. Las personas se comunican con el lenguaje, que es un sistema muy desarrollado formado por palabras y símbolos que tienen significado para el que habla y para quienes lo escuchan, lo mismo es para las computadoras las cuales tienen sistemas y se comunican por medio de computadoras.
La programación es el proceso de convertir las especificaciones a grandes rasgos de los sistemas en instrucciones de maquina que produzcan los resultados deseados.
¿QUÉ ESTUDIA?
El trabajo de un programador de sistemas es seleccionar, modificar y mantener el complejo software del sistema operativo. Por lo tanto, los programadores de sistemas desempeñan una función de apoyo al mantener el ambiente del software del sistema operativo en el que trabajan los programadores de aplicaciones y los operadores de las computadoras. También participan en las decisiones relativas a reducciones o ampliaciones de hardware y/o software. Programación de Sistemas Conceptos y Aplicaciones Se entiende por programación de sistemas el conjunto de programas necesario para que una computadora de una imagen coherente y monolítica ante sus usuarios. Es un área especializada dentro de las ciencias de la computación. Así, mediante la programación de sistemas, no solo se manejan las computadoras por medio del lenguaje maquina (0 y 1) sino por otros sistemas operativos, sin lo cual sería muy difícil la interacción con la maquina.
En esta área se estudia la teoría de máquinas y su aplicación en el diseño de sistemas digitales y de arquitectura de computadoras. Áreas específicas: Sistemas digitales para arquitecturas paralelas y control de procesos y sistemas reconfigurables.
Inteligencia artificial aplicada a trabajo cooperativo En las aplicaciones cooperativas realizadas en el entorno Web, es viable hacer uso de las herramientas de inteligencia artificial. Se están diseñando y construyendo herramientas para elaborar un sistema sin costura que opere en Web con la finalidad de proporcionar a un grupo de coautores el soporte necesario para producir conjunta y simultáneamente un mismo documento.
1.2 Herramientas desarrolladas con la teoría de programación de sistemas.
Las herramientas de programación, son aquellas que permiten realizar aplicativos, programas, rutinas, utilitarios y sistemas para que la parte física del computador u ordenador, funcione y pueda producir resultados.
Hoy en día existen múltiples herramientas de programación en el mercado, tanto para analistas expertos como para analistas inexpertos.
Las herramientas de programación más comunes del mercado, cuentan hoy día con programas de depuración o debugger, que son utilitarios que nos permiten detectar los posibles errores en tiempo de ejecución o corrida de rutinas y programas.
Muchas herramientas de software que manipulan programas fuente realizan primero algún tipo de análisis. Algunos ejemplos de tales herramientas son:
• Editores de estructuras: Un editor de estructuras toma como entrada una secuencia de órdenes para construir un programa fuente. El editor de estructuras no sólo realiza las funciones de creación y modificación de textos de un editor de textos ordinario, sino que también analiza el texto del programa, imponiendo al programa fuente una estructura jerárquica apropiada. De esa manera, el editor de estructuras puede realizar tareas adicionales útiles para la preparación de programas. Por ejemplo, puede comprobar si la entrada está formada correctamente, puede proporcionar palabras clave de manera automática (por ejemplo, cuando el usuario escribe while, el editor proporciona el correspondiente do y le recuerda al usuario que entre las dos palabras debe ir un condicional) y puede saltar desde un begin o un paréntesis izquierdo hasta su correspondiente end o paréntesis derecho. Además, la salida de tal editor suele ser similar a la salida de la fase de análisis de un compilador.
• Impresoras estéticas: Una impresora estética analiza un programa y lo imprime de forma que la estructura del programa resulte claramente visible. Por ejemplo, los comentarios pueden aparecer con un tipo de letra especial, y las proposiciones pueden aparecer con una indentación proporcional a la profundidad de su anidamiento en la organización jerárquica de las proposiciones.
• Verificadores estáticos: Un verificador estático lee un programa, lo analiza e intenta descubrir errores potenciales sin ejecutar el programa. La parte de análisis a menudo es similar a la que se encuentra en los compiladores de optimización. Así, un verificador estático puede detectar si hay partes de un programa que nunca se podrán ejecutar o si cierta variable se usa antes de ser definida. Además, puede detectar errores de lógica, como intentar utilizar una variable real como apuntador, empleando las técnicas de verificación de tipos.
• Intérpretes: En lugar de producir un programa objeto como resultado de una traducción, un intérprete realiza las operaciones que implica el programa fuente. Para una proposición de asignación, por ejemplo, un intérprete podría construir un árbol como el de la figura 1 y después efectuar las operaciones de los nodos conforme “recorre” el árbol. En la raíz descubriría que tiene que realizar una asignación, y llamaría a una rutina para evaluar la expresión de la derecha y después almacenaría el valor resultante en la localidad de memoria asociada con el identificador posición. En el hijo derecho de la raíz, la rutina descubriría que tiene que calcular la suma de dos expresiones. Se llamaría a sí misma
...