El documento describe la evolución de los compiladores desde su origen en 1946 hasta los tipos modernos. Los primeros compiladores traducían lenguajes de alto nivel como FORTRAN a código máquina. Ahora existen compiladores optimizadores, de una o varias pasadas, cruzados y JIT. El proceso de compilación incluye análisis léxico, sintáctico, semántico y generación de código intermedio y objeto, usando estructuras de datos como tablas de símbolos y literales.
Este documento describe los conceptos fundamentales de los lenguajes ensamblador y de programación de sistemas. Explica los diferentes tipos de ensambladores, su estructura, sistemas numéricos, gestión de memoria, traducción de direcciones, evolución de lenguajes de programación, macros, y las funciones y procesos de los ensambladores.
Este documento describe los fundamentos del lenguaje ensamblador. Explica que el lenguaje ensamblador traduce programas escritos en un lenguaje simbólico a lenguaje de máquina, haciendo más fácil la programación. También describe las etapas para poner a punto un programa en ensamblador, incluyendo programación, edición, ensamblaje, carga/enlace y depuración. Además, explica las directivas del ensamblador como ORG, DS y EQU que controlan la memoria y definen símbol
El documento habla sobre el proceso de compilación y el uso de código intermedio. Explica que el código intermedio elimina la necesidad de generar un nuevo compilador completo para cada máquina, ya que la parte de análisis es la misma para todos los compiladores. También es más fácil optimizar el código aplicando técnicas al código intermedio que al código fuente original. El código intermedio puede ser específico a cada lenguaje o independiente del lenguaje, y representa el código de manera lineal, como notación postfix.
Un compilador es un programa que traduce código fuente escrito en un lenguaje de alto nivel a un lenguaje de bajo nivel como lenguaje de máquina. Los compiladores traducen todo el programa antes de ejecutarlo, lo que hace que los programas compilados se ejecuten más rápido que los interpretados. Los compiladores también informan de errores en el código fuente.
Un compilador traduce programas escritos en lenguajes de alto nivel como C++ a código de máquina que la computadora puede entender y ejecutar. El compilador convierte el código fuente en código objeto y detecta errores. Una vez compilado, el código objeto se puede ejecutar de forma independiente a su compilación.
El documento describe los diferentes niveles de abstracción en las máquinas actuales, desde el nivel de lógica digital hasta los lenguajes de alto nivel. Explica que un intérprete traduce un programa de un lenguaje a otro lenguaje y detecta errores, mientras que los diferentes niveles están relacionados con la traducción y ejecución de instrucciones más simples. También resume los pasos básicos involucrados en la compilación de un programa, como el análisis léxico, sintáctico y semántico.
El documento describe la evolución de los compiladores desde su origen en 1946 hasta los tipos modernos. Los primeros compiladores traducían lenguajes de alto nivel como FORTRAN a código máquina. Ahora existen compiladores optimizadores, de una o varias pasadas, cruzados y JIT. El proceso de compilación incluye análisis léxico, sintáctico, semántico y generación de código intermedio y objeto, usando estructuras de datos como tablas de símbolos y literales.
Este documento describe los conceptos fundamentales de los lenguajes ensamblador y de programación de sistemas. Explica los diferentes tipos de ensambladores, su estructura, sistemas numéricos, gestión de memoria, traducción de direcciones, evolución de lenguajes de programación, macros, y las funciones y procesos de los ensambladores.
Este documento describe los fundamentos del lenguaje ensamblador. Explica que el lenguaje ensamblador traduce programas escritos en un lenguaje simbólico a lenguaje de máquina, haciendo más fácil la programación. También describe las etapas para poner a punto un programa en ensamblador, incluyendo programación, edición, ensamblaje, carga/enlace y depuración. Además, explica las directivas del ensamblador como ORG, DS y EQU que controlan la memoria y definen símbol
El documento habla sobre el proceso de compilación y el uso de código intermedio. Explica que el código intermedio elimina la necesidad de generar un nuevo compilador completo para cada máquina, ya que la parte de análisis es la misma para todos los compiladores. También es más fácil optimizar el código aplicando técnicas al código intermedio que al código fuente original. El código intermedio puede ser específico a cada lenguaje o independiente del lenguaje, y representa el código de manera lineal, como notación postfix.
Un compilador es un programa que traduce código fuente escrito en un lenguaje de alto nivel a un lenguaje de bajo nivel como lenguaje de máquina. Los compiladores traducen todo el programa antes de ejecutarlo, lo que hace que los programas compilados se ejecuten más rápido que los interpretados. Los compiladores también informan de errores en el código fuente.
Un compilador traduce programas escritos en lenguajes de alto nivel como C++ a código de máquina que la computadora puede entender y ejecutar. El compilador convierte el código fuente en código objeto y detecta errores. Una vez compilado, el código objeto se puede ejecutar de forma independiente a su compilación.
El documento describe los diferentes niveles de abstracción en las máquinas actuales, desde el nivel de lógica digital hasta los lenguajes de alto nivel. Explica que un intérprete traduce un programa de un lenguaje a otro lenguaje y detecta errores, mientras que los diferentes niveles están relacionados con la traducción y ejecución de instrucciones más simples. También resume los pasos básicos involucrados en la compilación de un programa, como el análisis léxico, sintáctico y semántico.
Este documento explica conceptos básicos relacionados con la computación como compiladores, interpretadores, lenguajes de programación de alto, medio y bajo nivel. Define un compilador como un programa que traduce código fuente escrito en un lenguaje de alto nivel a lenguaje de máquina, e interpretador como un programa que ejecuta otros programas traduciéndolos a medida. También describe las características y diferencias entre lenguajes de alto, medio y bajo nivel.
El documento proporciona una introducción al lenguaje ensamblador. Explica que es un lenguaje de bajo nivel directamente traducible a lenguaje de máquina, e incluye definiciones sobre interpretadores, compiladores, ensambladores y el proceso de enlace. También describe las características básicas del lenguaje ensamblador como instrucciones, registros, operadores y estructuras de programa.
El documento proporciona una introducción al lenguaje ensamblador. Explica que es un lenguaje de bajo nivel directamente traducible a lenguaje de máquina, e incluye definiciones sobre interpretadores, compiladores, ensambladores y el proceso de enlace. También describe las características básicas del lenguaje ensamblador como instrucciones, registros, operadores y estructuras de programa.
El documento describe la evolución de los lenguajes de programación desde el lenguaje máquina hasta el lenguaje ensamblador. Inicialmente, los programadores utilizaban códigos numéricos que luego se reemplazaron por símbolos alfabéticos para facilitar la programación. Posteriormente surgió la técnica de direccionamiento simbólico que permitía utilizar nombres en lugar de direcciones numéricas. Finalmente, los lenguajes ensambladores asignan automáticamente las direcciones, simplificando aún más el proceso de programación.
Este documento describe los diferentes tipos de traductores y las fases del proceso de compilación. Explica que los traductores incluyen compiladores, intérpretes, preprocesadores, ensambladores y conversores fuente-fuente. Luego describe las tres fases principales del proceso de compilación: análisis, síntesis y optimización. Finalmente, utiliza un ejemplo paso a paso para ilustrar cómo funciona el proceso de compilación.
El documento describe el lenguaje ensamblador, incluyendo su definición como un conjunto de mnemónicos que representan instrucciones básicas para hardware de computación. Explica las características, ventajas y desventajas del lenguaje ensamblador, así como varias instrucciones comunes como transferencia de datos, carga, pilas y más. Concluye recomendando el uso del lenguaje ensamblador para complementar los límites de lenguajes de alto nivel y en ramas donde los recursos son limitados.
El documento describe la evolución de los lenguajes de programación desde el lenguaje máquina hasta el lenguaje ensamblador. Inicialmente, los programas se escribían directamente en lenguaje máquina usando códigos numéricos, pero luego se desarrollaron códigos nemotécnicos y el direccionamiento simbólico para facilitar la programación. Finalmente surgió el lenguaje ensamblador, el cual traduce instrucciones simbólicas a código de máquina de forma automática.
El documento describe la evolución de los lenguajes de programación desde el lenguaje máquina hasta el lenguaje ensamblador. Inicialmente, los programas se escribían directamente en lenguaje máquina usando códigos numéricos, pero luego se desarrollaron códigos nemotécnicos y el direccionamiento simbólico para facilitar la programación. Finalmente surgió el lenguaje ensamblador, el cual traduce instrucciones simbólicas a código de máquina de forma automática.
Este documento proporciona una introducción a la programación en lenguaje ensamblador para microcontroladores PIC. Explica conceptos básicos como instrucciones, programas, etiquetas, directivas y la estructura de un programa ensamblador. También describe cómo ensamblar y transferir programas ensamblador al microcontrolador.
El documento describe los conceptos básicos del lenguaje ensamblador, incluyendo sus características, ventajas y desventajas. Explica que el lenguaje ensamblador es un lenguaje de bajo nivel que se acerca al código máquina y permite un control preciso pero no es portable. También describe los principales registros como CS, IP, AX y SP usados en la arquitectura x86.
Este documento describe los componentes y fases de un compilador. Explica que un compilador traduce un programa escrito en un lenguaje de alto nivel a otro lenguaje como lenguaje de máquina. Luego describe las cuatro fases principales de un compilador: análisis léxico, sintáctico y semántico, síntesis y optimización. También explica conceptos como autómatas finitos, autómatas de pila, diagramas de estados y máquinas de pila, que son utilizados en el proceso
El documento habla sobre la generación de código intermedio en los compiladores. Explica que el código intermedio elimina la necesidad de crear un compilador nuevo para cada máquina, ya que la primera parte (análisis) es la misma para todos, mientras que la segunda parte (síntesis) varía según la máquina destino. También describe los diferentes tipos de representación intermedia como de nivel alto, bajo, independiente del lenguaje o específico; y el proceso three-address que convierte las expresiones en subexpresiones con máximo tres direcciones
El documento describe los conceptos fundamentales de la programación, incluyendo lenguajes de programación, programación, lenguajes de máquina, ensambladores, compiladores e intérpretes. Explica que un lenguaje de programación es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas a cabo por máquinas como las computadoras. También define la programación como el proceso de creación de un programa de computadora a través de varios pasos como el desarrollo lógico, codificación, compilación y prueba.
El documento describe los diferentes tipos de compiladores y lenguajes de programación. Explica que los compiladores traducen código fuente escrito en lenguajes de alto nivel a lenguajes de bajo nivel comprensibles para las computadoras. Se dividen en dos partes: el front end analiza el código fuente, y el back end genera código máquina. También describe los diferentes tipos de lenguajes como de alto, medio y bajo nivel.
Este documento describe el lenguaje de programación assembler. Explica que los lenguajes ensambladores fueron desarrollados en la década de 1950 y eliminaron muchos errores y consumo de tiempo de los primeros lenguajes de programación. También describe las características, ventajas y desventajas del lenguaje assembler, así como sus aplicaciones comerciales como sistemas embebidos, tiempo real, entretenimiento y procesamiento de señales.
El documento describe los diferentes tipos y niveles de lenguajes de programación utilizados para programar microcontroladores, incluyendo lenguajes de bajo nivel como el lenguaje de máquina y el ensamblador, y lenguajes de alto nivel. Explica que el ensamblador MPAS se utilizará para traducir el código fuente en lenguaje ensamblador al código de máquina que puede ejecutar el microcontrolador PIC16F84A, el cual será simulado en Proteus.
Un compilador convierte un programa de alto nivel a código máquina, mientras que un intérprete traduce y ejecuta línea por línea. Un traductor toma un lenguaje fuente y lo convierte a un lenguaje objetivo. Las fases de un compilador incluyen análisis léxico, sintáctico, semántico, generación de código intermedio, optimización y generación de código.
Este documento describe los diferentes tipos de lenguajes de programación, compiladores e intérpretes. Explica que los lenguajes de máquina son numéricos y los ensambladores son más fáciles de usar pero aún están cerca de la máquina. Los compiladores traducen el código fuente a objeto mientras que los intérpretes lo ejecutan directamente. También cubre los criterios de diseño de lenguajes como claridad y dominios de aplicación como científicos y de sistemas.
Un programa escrito en el lenguaje ensamblador requiere considerablemente menos memoria y tiempo de ejecución que un programa escrito en los conocidos lenguajes de alto nivel, como Pascal y C
Este documento explica conceptos básicos relacionados con la computación como compiladores, interpretadores, lenguajes de programación de alto, medio y bajo nivel. Define un compilador como un programa que traduce código fuente escrito en un lenguaje de alto nivel a lenguaje de máquina, e interpretador como un programa que ejecuta otros programas traduciéndolos a medida. También describe las características y diferencias entre lenguajes de alto, medio y bajo nivel.
El documento proporciona una introducción al lenguaje ensamblador. Explica que es un lenguaje de bajo nivel directamente traducible a lenguaje de máquina, e incluye definiciones sobre interpretadores, compiladores, ensambladores y el proceso de enlace. También describe las características básicas del lenguaje ensamblador como instrucciones, registros, operadores y estructuras de programa.
El documento proporciona una introducción al lenguaje ensamblador. Explica que es un lenguaje de bajo nivel directamente traducible a lenguaje de máquina, e incluye definiciones sobre interpretadores, compiladores, ensambladores y el proceso de enlace. También describe las características básicas del lenguaje ensamblador como instrucciones, registros, operadores y estructuras de programa.
El documento describe la evolución de los lenguajes de programación desde el lenguaje máquina hasta el lenguaje ensamblador. Inicialmente, los programadores utilizaban códigos numéricos que luego se reemplazaron por símbolos alfabéticos para facilitar la programación. Posteriormente surgió la técnica de direccionamiento simbólico que permitía utilizar nombres en lugar de direcciones numéricas. Finalmente, los lenguajes ensambladores asignan automáticamente las direcciones, simplificando aún más el proceso de programación.
Este documento describe los diferentes tipos de traductores y las fases del proceso de compilación. Explica que los traductores incluyen compiladores, intérpretes, preprocesadores, ensambladores y conversores fuente-fuente. Luego describe las tres fases principales del proceso de compilación: análisis, síntesis y optimización. Finalmente, utiliza un ejemplo paso a paso para ilustrar cómo funciona el proceso de compilación.
El documento describe el lenguaje ensamblador, incluyendo su definición como un conjunto de mnemónicos que representan instrucciones básicas para hardware de computación. Explica las características, ventajas y desventajas del lenguaje ensamblador, así como varias instrucciones comunes como transferencia de datos, carga, pilas y más. Concluye recomendando el uso del lenguaje ensamblador para complementar los límites de lenguajes de alto nivel y en ramas donde los recursos son limitados.
El documento describe la evolución de los lenguajes de programación desde el lenguaje máquina hasta el lenguaje ensamblador. Inicialmente, los programas se escribían directamente en lenguaje máquina usando códigos numéricos, pero luego se desarrollaron códigos nemotécnicos y el direccionamiento simbólico para facilitar la programación. Finalmente surgió el lenguaje ensamblador, el cual traduce instrucciones simbólicas a código de máquina de forma automática.
El documento describe la evolución de los lenguajes de programación desde el lenguaje máquina hasta el lenguaje ensamblador. Inicialmente, los programas se escribían directamente en lenguaje máquina usando códigos numéricos, pero luego se desarrollaron códigos nemotécnicos y el direccionamiento simbólico para facilitar la programación. Finalmente surgió el lenguaje ensamblador, el cual traduce instrucciones simbólicas a código de máquina de forma automática.
Este documento proporciona una introducción a la programación en lenguaje ensamblador para microcontroladores PIC. Explica conceptos básicos como instrucciones, programas, etiquetas, directivas y la estructura de un programa ensamblador. También describe cómo ensamblar y transferir programas ensamblador al microcontrolador.
El documento describe los conceptos básicos del lenguaje ensamblador, incluyendo sus características, ventajas y desventajas. Explica que el lenguaje ensamblador es un lenguaje de bajo nivel que se acerca al código máquina y permite un control preciso pero no es portable. También describe los principales registros como CS, IP, AX y SP usados en la arquitectura x86.
Este documento describe los componentes y fases de un compilador. Explica que un compilador traduce un programa escrito en un lenguaje de alto nivel a otro lenguaje como lenguaje de máquina. Luego describe las cuatro fases principales de un compilador: análisis léxico, sintáctico y semántico, síntesis y optimización. También explica conceptos como autómatas finitos, autómatas de pila, diagramas de estados y máquinas de pila, que son utilizados en el proceso
El documento habla sobre la generación de código intermedio en los compiladores. Explica que el código intermedio elimina la necesidad de crear un compilador nuevo para cada máquina, ya que la primera parte (análisis) es la misma para todos, mientras que la segunda parte (síntesis) varía según la máquina destino. También describe los diferentes tipos de representación intermedia como de nivel alto, bajo, independiente del lenguaje o específico; y el proceso three-address que convierte las expresiones en subexpresiones con máximo tres direcciones
El documento describe los conceptos fundamentales de la programación, incluyendo lenguajes de programación, programación, lenguajes de máquina, ensambladores, compiladores e intérpretes. Explica que un lenguaje de programación es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas a cabo por máquinas como las computadoras. También define la programación como el proceso de creación de un programa de computadora a través de varios pasos como el desarrollo lógico, codificación, compilación y prueba.
El documento describe los diferentes tipos de compiladores y lenguajes de programación. Explica que los compiladores traducen código fuente escrito en lenguajes de alto nivel a lenguajes de bajo nivel comprensibles para las computadoras. Se dividen en dos partes: el front end analiza el código fuente, y el back end genera código máquina. También describe los diferentes tipos de lenguajes como de alto, medio y bajo nivel.
Este documento describe el lenguaje de programación assembler. Explica que los lenguajes ensambladores fueron desarrollados en la década de 1950 y eliminaron muchos errores y consumo de tiempo de los primeros lenguajes de programación. También describe las características, ventajas y desventajas del lenguaje assembler, así como sus aplicaciones comerciales como sistemas embebidos, tiempo real, entretenimiento y procesamiento de señales.
El documento describe los diferentes tipos y niveles de lenguajes de programación utilizados para programar microcontroladores, incluyendo lenguajes de bajo nivel como el lenguaje de máquina y el ensamblador, y lenguajes de alto nivel. Explica que el ensamblador MPAS se utilizará para traducir el código fuente en lenguaje ensamblador al código de máquina que puede ejecutar el microcontrolador PIC16F84A, el cual será simulado en Proteus.
Un compilador convierte un programa de alto nivel a código máquina, mientras que un intérprete traduce y ejecuta línea por línea. Un traductor toma un lenguaje fuente y lo convierte a un lenguaje objetivo. Las fases de un compilador incluyen análisis léxico, sintáctico, semántico, generación de código intermedio, optimización y generación de código.
Este documento describe los diferentes tipos de lenguajes de programación, compiladores e intérpretes. Explica que los lenguajes de máquina son numéricos y los ensambladores son más fáciles de usar pero aún están cerca de la máquina. Los compiladores traducen el código fuente a objeto mientras que los intérpretes lo ejecutan directamente. También cubre los criterios de diseño de lenguajes como claridad y dominios de aplicación como científicos y de sistemas.
Un programa escrito en el lenguaje ensamblador requiere considerablemente menos memoria y tiempo de ejecución que un programa escrito en los conocidos lenguajes de alto nivel, como Pascal y C
Similar a LENGUAJES DE PROGRAMACIÓN UNAH 04022023 .pptx (20)
para programadores y desarrolladores de inteligencia artificial y machine learning, como se automatiza una cadena de valor o cadena de valor gracias a la teoría por Manuel Diaz @manuelmakemoney
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...AMADO SALVADOR
Descarga el Catálogo General de Tarifas 2024 de Vaillant, líder en tecnología para calefacción, ventilación y energía solar térmica y fotovoltaica. En Amado Salvador, como distribuidor oficial de Vaillant, te ofrecemos una amplia gama de productos de alta calidad y diseño innovador para tus proyectos de climatización y energía.
Descubre nuestra selección de productos Vaillant, incluyendo bombas de calor altamente eficientes, fancoils de última generación, sistemas de ventilación de alto rendimiento y soluciones de energía solar fotovoltaica y térmica para un rendimiento óptimo y sostenible. El catálogo de Vaillant 2024 presenta una variedad de opciones en calderas de condensación que garantizan eficiencia energética y durabilidad.
Con Vaillant, obtienes más que productos de climatización: control avanzado y conectividad para una gestión inteligente del sistema, acumuladores de agua caliente de gran capacidad y sistemas de aire acondicionado para un confort total. Confía en la fiabilidad de Amado Salvador como distribuidor oficial de Vaillant, y en la resistencia de los productos Vaillant, respaldados por años de experiencia e innovación en el sector.
En Amado Salvador, distribuidor oficial de Vaillant en Valencia, no solo proporcionamos productos de calidad, sino también servicios especializados para profesionales, asegurando que tus proyectos cuenten con el mejor soporte técnico y asesoramiento. Descarga nuestro catálogo y descubre por qué Vaillant es la elección preferida para proyectos de climatización y energía en Amado Salvador.
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)codesiret
Los protocolos son conjuntos de
normas para formatos de mensaje y
procedimientos que permiten a las
máquinas y los programas de aplicación
intercambiar información.
El uso de las TIC en la vida cotidiana.pptxjgvanessa23
En esta presentación, he compartido información sobre las Tecnologías de la Información y la Comunicación (TIC) y su aplicación en diversos ámbitos de la vida cotidiana, como el hogar, la educación y el trabajo.
He explicado qué son las TIC, las diferentes categorías y sus respectivos ejemplos, así como los beneficios y aplicaciones en cada uno de estos ámbitos.
Espero que esta información sea útil para quienes la lean y les ayude a comprender mejor las TIC y su impacto en nuestra vida cotidiana.
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)AbrahamCastillo42
Power point, diseñado por estudiantes de ciclo 1 arquitectura de plataformas, esta con la finalidad de dar a conocer el componente hardware llamado tarjeta de video..
1. IS-513 LENGUAJES DE PROGRAMACIÓN
CONTACTO
MSc IBIS JAVIER ZAVALA RODRÍGUEZ
ibis.zavala@unah.hn
+504 3182-1148
IS-513 Lenguajes de Programación
Sábados 8:00 am – 12 m
enero de 2023
UNIVERSIDAD NACIONAL AUTÓNOMA DE
HONDURAS
CENTRO UNIVERSITARIO REGIONAL DEL
LITORAL PACÍFICO
IS-513 LENGUAJES DE PROGRAMACIÓN
2. IS-513 LENGUAJES DE PROGRAMACIÓN
• Traductor
• Compilador
• Análisis Léxico
• Análisis Sintáctico
• Análisis Semántico
• Generación de Código intermedio
• Optimización de Código
• Intérprete
Actividad #1
Actividad #2
EL PROCESO DE
COMPILACIÓN
04/02/2023
6. IS-513 LENGUAJES DE PROGRAMACIÓN
COMPILADOR
Cualquier compilador debe realizar dos tareas
principales: análisis del programa a compilar y
síntesis de un programa en lenguaje máquina.
Para el estudio de un compilador, es necesario
dividir su trabajo en fases, cada fase
representa una transformación al código fuente
para obtener el código objeto. En cada una de
las fases se utiliza un administrador de la tabla
de símbolos y un manejador de errores.
7. IS-513 LENGUAJES DE PROGRAMACIÓN
ANÁLISIS LÉXICO
1 fase de compilación
• Divide el programa fuente en unidades sintácticas llamadas
tokens.
• Elimina espacios vacíos y caracteres especiales.
• Interactúa con la tabla de símbolos.
9. IS-513 LENGUAJES DE PROGRAMACIÓN
ANÁLISIS SINTÁCTICO
Es la segunda fase del proceso de compilación y tiene como finalidad la
generación de un Árbol sintáctico, el cual no es más que una estructura de
datos compleja que permite representar de una forma más simple al
programa fuente.
Los compiladores modernos utilizan estructuras de objetos para representa a
un programa, de esta forma existe una clase específica para representa cada
posible token de nuestra tabla de símbolos.
10. IS-513 LENGUAJES DE PROGRAMACIÓN
ANÁLISIS SEMÁNTICO
Es el último paso antes de empezar a compilar realmente el código,
prepara el programa para ser compilado.
Parte del árbol sintáctico abstracto y tiene la finalidad de validar los puntos
más finos del programa, analiza que todo el programa tenga un significado
exacto y que este no pueda fallar en tiempo de ejecución.
Ejemplo, validar compatibilidad en tipos de datos, que la variable utilizada en
una instrucción este previamente declara o que estén dentro del contexto, si
implementamos una interface que todos los métodos estén definidos, etc.
11. IS-513 LENGUAJES DE PROGRAMACIÓN
CÓDIGO INTERMEDIO
Se puede considerar esta operación intermedia como un subprograma para
una máquina abstracta, a esta representación debe tener dos propiedades
importantes: debe ser fácil de producir y fácil de traducir al programa objeto.
Existe una forma intermedia llamada código de tres direcciones, que consiste
en una secuencia de instrucciones similares a ensamblador, con tres
operandos por instrucción. Cada operando puede actuar como un registro.
Hay varios puntos que vale la pena mencionar sobre las instrucciones
de tres direcciones. En primer lugar, cada instrucción de asignación
de tres direcciones tiene, por lo menos, un operador del lado
derecho. Por ende, estas instrucciones corrigen el orden en el que se
van a realizar las operaciones; la multiplicación va antes que la suma
en el programa fuente. En segundo lugar, el compilador debe generar
un nombre temporal para guardar el valor calculado por una
instrucción de tres direcciones. En tercer lugar, algunas
"instrucciones de tres direcciones" como la primera y la última en la
secuencia anterior, tienen menos de tres operandos.
12. IS-513 LENGUAJES DE PROGRAMACIÓN
OPTIMIZACIÓN DE CÓDIGO
La fase de optimización de código independiente de la máquina trata de
mejorar el código intermedio, de manera que se produzca un mejor
código destino. Por lo general, mejor significa más rápido, pero pueden
lograrse otros objetivos, como un código más corto, o un código de
destino que consuma menos poder.
El optimizador puede deducir que la conversión del
60, de entero a punto flotante, puede realizarse de
una vez por todas en tiempo de compilación, por lo
que se puede eliminar la operación inttofloat
sustituyendo el entero 60 por el número de punto
flotante 60.0. Lo que, es más, t3 se utiliza sólo una vez
para transmitir su valor a id1, para que el optimizador
pueda transformar (1.3) en la siguiente secuencia más
corta.
13. IS-513 LENGUAJES DE PROGRAMACIÓN
GENERACIÓN DE CÓDIGO
Recibe como entrada una representación intermedia del programa fuente y
la asigna al lenguaje destino. Si el lenguaje destino es código máquina, se
seleccionan registros o ubicaciones (localidades) de memoria para cada una
de las variables que utiliza el programa. Después, las instrucciones
intermedias se traducen en secuencias de instrucciones de máquina que
realizan la misma tarea. Un aspecto crucial de la generación de código es la
asignación juiciosa de los registros para guardar las variables.
El primer operando de cada instrucción especifica un
destino. La F en cada instrucción nos indica que trata con
número de punto flotante. El código carga el contenido de
la dirección id3 en el registro R2, y después lo multiplica
con la constante de punto flotante 60.0. El # indica que el
número 60.0 se va a tratar como una constante inmediata.
La tercera instrucción mueve id2 al registro R1 y la cuarta lo
suma al valor que se había calculado antes en el
registro R2. Por último, el valor en el registro R1 se
almacena en la dirección de id1, por lo que el código
implementa en forma correcta la instrucción de asignación.
14. IS-513 LENGUAJES DE PROGRAMACIÓN
MANEJADOR DE ERRORES
Es posible encontrar errores. De esta forma podrán controlarse
más eficientemente los errores encontrados en cada una de las
fases de la compilación de un programa.
16. IS-513 LENGUAJES DE PROGRAMACIÓN
INTÉRPRETE
Los intérpretes realizan normalmente dos operaciones:
Traducen el código fuente a un formato interno.
Ejecutan o interpretan el programa traducido al formato interno.
Particularidades de la interpretación:
Ahorra memoria.
Produce un resultado que no se puede
almacenar, lo cual hace la ejecución lenta.
No demasiado eficiente, cada vez que se
entre en un bucle se analizaran sus
sentencias.
Facilita el proceso de depuración.
No produce resultados transportables.
La interpretación es útil en:
Sistemas interactivos.
Programas de pequeña envergadura.
Programas de prototipo y de enseñanza.
17. IS-513 LENGUAJES DE PROGRAMACIÓN
ACTIVIDAD #1
Viernes 10/02/2023
• 1. Tokens
• 2. Expresiones Regulares
• 3. Gramática libre de contexto
• 4. Árboles de Parseo
• 5. Derivaciones