Universidad Autónoma de Occidente
Local cover image
Local cover image

COMPILADOR C CCS Y SIMULACION PROTEUS PARA MICROCONTROLADORES PIC /

By: Language: Español Publication details: MEXICO: ALFAOMEGA 2008Edition: 1a EdiciónDescription: 276 páginas Ilustración 17 X 23 CMISBN:
  • 9789701513972
Subject(s): LOC classification:
  • TJ223  P76 G37
Contents:
Índice Agradecimientos .................................................................................................. XVII Prólogo ..................................................................................................................... XIX Parte I. Teoría Capítulo 1. Introducción ............................................................................................ 3 1.1 Definición de compilador .................................................................... 3 1.2 Estructura de un compilador .............................................................. 5 1.2.1 Análisis léxico ................................................................................. 7 1.2.2 Análisis sintáctico .......................................................................... 8 1.2.3 Análisis semántico ......................................................................... 9 1.2.4 Generación de código intermedio ............................................. 10 1.2.5 Generación de código final ......................................................... 13 1.2.6 Tablas de símbolos y de tipos .................................................... 13 1.2.7 Manejo de errores ........................................................................ 14 1.3 Fases del proceso de compilación ..................................................... 14 1.4 Herramientas y descripción del lenguaje ....................................... 16 Capítulo 2. Análisis léxico ...................................................................................... 17 2.1 Utilidad del análisis léxico ................................................................. 17 2.2 Funcionamiento .................................................................................. 18 2.3 Términos utilizados ............................................................................ 21 2.4 Especificación del analizador léxico ................................................. 22 2.5 Construcción de un analizador léxico .............................................. 23 COMPILADORES VIII 2.5.1 Identificar las palabras reservadas ........................................... 23 2.5.2 Construir el diagrama de transiciones ..................................... 24 2.6 Ejercicios resueltos ............................................................................. 27 Ejercicio 2.1 ........................................................................................... 27 Ejercicio 2.2 ........................................................................................... 30 Capítulo 3.Análisis sintáctico ................................................................................ 33 3.1 Funciones del analizador sintáctico ................................................ 33 3.2 Diseño de gramáticas ........................................................................ 35 3.3 Dificultades para la creación de gramáticas ................................... 38 3.3.1 La recursividad ............................................................................ 38 3.3.2 La ambigüedad ............................................................................ 39 3.3.3 La asociatividad .......................................................................... 40 3.3.4 La precedencia ............................................................................. 41 3.3.5 La parentización .......................................................................... 41 3.4 Análisis sintáctico lineal .................................................................... 41 3.5 Diagramas de sintaxis ....................................................................... 42 3.6 Ejercicios resueltos ............................................................................. 46 Ejercicio 3.1 ........................................................................................... 46 Ejercicio 3.2 ........................................................................................... 47 Ejercicio 3.3 ........................................................................................... 48 Capítulo 4. Análisis sintáctico descendente ....................................................... 51 4.1 Introducción ........................................................................................ 51 4.2 Analizadores sintácticos predictivos ............................................... 54 4.3 Conjuntos de predicción y gramáticas LL(1) ................................. 55 4.3.1 Conjunto de primeros ................................................................. 56 4.3.2 Conjunto de siguientes ............................................................... 59 4.3.3 Conjunto de predicción y gramáticas LL(1) ............................ 60 4.4 Conversión a gramáticas LL(1) ........................................................ 64 4.4.1 Eliminación de la factorización por la izquierda .................... 65 4.4.2 Eliminación de la recursividad por la izquierda .................... 66 4.5 Analizadores sintácticos descendentes recursivos (ASDR) ......... 68 4.6 Implementación de ASDP’s .............................................................. 68 4.6.1 Construcción de la tabla de análisis ......................................... 69 © Alfaomega - RC Libros ÍNDICE IX 4.6.2 Algoritmo de análisis .................................................................. 71 4.7 Ejercicios resueltos .............................................................................. 74 Ejercicio 4.1 ............................................................................................ 74 Ejercicio 4.2 ............................................................................................ 75 Capítulo 5. Análisis sintáctico ascendente ........................................................... 79 5.1 Introducción ........................................................................................ 79 5.2 Algoritmo de desplazamiento y reducción ..................................... 80 5.2.1 Acción ACEPTAR ........................................................................ 82 5.2.2 Acción RECHAZAR .................................................................... 82 5.2.3 Método GOTO .............................................................................. 82 5.2.4 Acción REDUCIR ......................................................................... 82 5.2.5 Acción DESPLAZAR ................................................................... 82 5.2.6 Ejemplo de aplicación del algoritmo de desplazamiento y reducción ............................................................................................ 82 5.3 Construcción de tablas de análisis sintáctico SLR .......................... 85 5.3.1 Elemento ....................................................................................... 85 5.3.2 Cierre o clausura .......................................................................... 86 5.3.3 Operación ir_a .............................................................................. 87 5.3.4 Construcción de la colección canónica de conjuntos de elementos ............................................................................................... 87 5.3.5 Construcción de un autómata a partir de la colección canónica .................................................................................................. 91 5.3.6 Construcción de la tabla de análisis a partir de un autómata ................................................................................................ 92 5.3.7 Conflictos en las tablas SLR ........................................................ 95 5.4 Organigrama de las gramáticas ........................................................ 96 5.5 Ejercicios resueltos .............................................................................. 98 Ejercicio 5.1 ............................................................................................ 98 Ejercicio 5.2 .......................................................................................... 100 Capítulo 6. Tabla de tipos y de símbolos ........................................................... 105 6.1 Introducción ...................................................................................... 105 6.2 La tabla de tipos ................................................................................ 105 6.2.1 Implementación de la tabla de tipos ....................................... 108 © Alfaomega - RC Libros COMPILADORES X 6.2.2 Implementación de una tabla de tipos única ........................ 110 6.2.3 Implementación de una pila de tablas de tipos .................... 119 6.2.4 Dimensión y acceso a los elementos de los tipos ................. 123 6.3 La tabla de símbolos ........................................................................ 126 6.4 Ejercicios resueltos ........................................................................... 130 Ejercicio 6.1 ......................................................................................... 130 Capítulo 7. Análisis semántico ............................................................................ 137 7.1 Introducción ...................................................................................... 137 7.2 Atributos y acciones semánticas .................................................... 138 7.3 Tipos de atributos ............................................................................ 143 7.4 Notaciones para la especificación de un traductor ..................... 145 7.4.1 Definición dirigida por sintaxis (DDS) .................................. 145 7.4.2 Esquema de traducción (ETDS) .............................................. 147 7.5 Comprobaciones semánticas .......................................................... 150 7.6 Ejercicios resueltos ........................................................................... 151 Ejercicio 7.1 ......................................................................................... 151 Ejercicio 7.2 ......................................................................................... 153 Ejercicio 7.3 ......................................................................................... 154 Capítulo 8. Generación de código intermedio y final ..................................... 155 8.1 Introducción ...................................................................................... 155 8.2 Tipos de código intermedio ............................................................ 157 8.2.1 Código de tres direcciones ....................................................... 157 8.2.2 Código de máquina virtual de pila ........................................ 158 8.2.3 Operadores sobrecargados ...................................................... 159 8.3 Código intermedio para expresiones ............................................ 159 8.4 Código intermedio para asignaciones .......................................... 163 8.5 Sentencias de entrada y salida ....................................................... 165 8.6 Sentencia condicional ...................................................................... 165 8.7 Iteración tipo while .......................................................................... 169 8.8 Iteración tipo repeat-until y do-while ........................................... 171 8.9 Iteración tipo for ............................................................................... 172 8.10 La selección ..................................................................................... 174 8.11 Código intermedio para vectores ................................................ 175 © Alfaomega - RC Libros ÍNDICE XI 8.12 Código intermedio para registros ................................................ 178 8.13 Espacio de direcciones ................................................................... 179 8.14 Registro de activación (RA) ........................................................... 184 8.15 Secuencia de acciones en subprogramas no recursivos ............ 186 8.16 Secuencia de acciones en subprogramas recursivos .................. 198 8.16.1 Compilación del cuerpo del subprograma ........................... 203 8.16.2 Compilación de la llamada al subprograma ........................ 205 8.17 Secuencia de acciones en subprogramas locales ........................ 216 8.17.1 Encadenamiento de accesos ................................................... 217 8.17.2 Display ...................................................................................... 218 Parte II. Implementación de L-0 Capítulo 9. Especificación de L-0 ......................................................................... 221 9.1 Introducción ...................................................................................... 221 9.2 Instrucciones ...................................................................................... 222 9.3 Variables lógicas ............................................................................... 222 9.4 Operadores ........................................................................................ 223 9.5 Expresiones ........................................................................................ 223 9.6 Ejemplo de programa válido ........................................................... 223 Capítulo 10. Análisis léxico de L-0 ...................................................................... 225 10.1 Preparativos ..................................................................................... 225 10.2 Patrones ............................................................................................ 226 10.3 Tokens válidos ................................................................................. 226 Capítulo 11.Análisis sintáctico de L-0 ................................................................. 229 11.1 Preparativos ..................................................................................... 229 11.2 Inicialización y arranque ............................................................... 230 11.3 Situación de terminales y no terminales ...................................... 232 11.4 Sentencias ......................................................................................... 233 11.5 Expresiones ...................................................................................... 234 11.6 Asignación ....................................................................................... 235 11.7 Sentencias de escritura ................................................................... 235 © Alfaomega - RC Libros COMPILADORES XII 11.8 Tablas de verdad ............................................................................ 236 11.9 Funciones ........................................................................................ 236 Capítulo 12. Análisis semántico y generación de código de L-0 ................... 237 12.1 Preparativos .................................................................................... 237 12.2 Tabla de símbolos .......................................................................... 237 12.3 Tratamiento de expresiones ......................................................... 240 12.3.1 La función tautología ............................................................... 242 12.3.2 La función contradicción .......................................................... 244 12.3.3 La función decidible .................................................................. 244 12.4 Operaciones con tablas de verdad ............................................... 245 12.5 La asignación .................................................................................. 247 12.6 Operaciones de impresión ............................................................ 248 Parte III. Implementación de C-0 Capítulo 13. Especificación de C-0 ..................................................................... 253 13.1 Introducción .................................................................................... 253 13.2 Tokens .............................................................................................. 253 13.3 Constantes ....................................................................................... 254 13.4 Operadores y delimitadores ......................................................... 254 13.5 Identificadores y palabras reservadas ......................................... 254 13.6 Tipos de datos ................................................................................. 255 13.7 Sentencias de control de flujo ....................................................... 255 13.8 Instrucciones de entrada-salida ................................................... 255 13.9 Declaración de variables ............................................................... 255 13.10 Programa principal ...................................................................... 255 13.11 Sentencia if-then-else ................................................................... 255 13.12 Sentencia while ............................................................................. 256 13.13 Ejemplo de programa válido ...................................................... 256 Capítulo 14. Análisis léxico, sintáctico y semántico de C-0 ........................... 257 14.1 Análisis léxico ................................................................................. 257 14.2 Análisis sintáctico .......................................................................... 258 14.3 Análisis semántico ......................................................................... 263 © Alfaomega - RC Libros ÍNDICE XIII Capítulo 15. Generación de código intermedio de C-0 .................................... 269 15.1 Introducción .................................................................................... 269 15.2 Código de tres direcciones ............................................................. 270 15.3 Espacio de direcciones ................................................................... 273 15.4 Asignación de direcciones a variables ......................................... 274 15.5 Asignación de direcciones a expresiones y condiciones ........... 275 15.6 CI de expresiones ............................................................................ 280 15.7 CI de condiciones ............................................................................ 283 15.8 CI de asignación .............................................................................. 284 15.9 CI de bloques if-then-else .............................................................. 286 15.10 CI de bloques while ...................................................................... 289 15.11 CI de putw ..................................................................................... 290 15.12 CI de puts ....................................................................................... 291 Capítulo 16. Generación de código final de C-0 ............................................... 297 16.1 Introducción .................................................................................... 297 16.2 Preparativos ..................................................................................... 297 16.3 Introducción a Ens2001 .................................................................. 298 16.4 CARGAR_DIRECCION op1 null res ........................................... 300 16.5 CARGAR_VALOR op1 null res .................................................... 301 16.6 SUMAR op1 op2 res ....................................................................... 301 16.7 RESTAR op1 op2 res ...................................................................... 302 16.8 MULTIPLICAR op1 op2 res .......................................................... 302 16.9 DIVIDIR op1 op2 res ...................................................................... 302 16.10 OR op1 op2 res .............................................................................. 302 16.11 AND op1 op2 res .......................................................................... 302 16.12 MAYOR op1 op2 res ..................................................................... 303 16.13 MENOR op1 op2 res ..................................................................... 303 16.14 IGUAL op1 op2 res ....................................................................... 303 16.15 DISTINTO op1 op2 res ................................................................. 304 16.16 ETIQUETA null null res............................................................... 304 16.17 SALTAR_CONDICION op1 null res ......................................... 304 16.18 SALTAR_ETIQUETA null null res ............................................. 305 © Alfaomega - RC Libros COMPILADORES XIV 16.19 IMPRIMIR_ENTERO op1 null null ........................................... 305 16.20 IMPRIMIR_CADENA op1 null null.......................................... 305 16.21 PONER_CADENA op1 null res ................................................. 305 16.22 Punto y final .................................................................................. 306 16.23 Posibles ampliaciones .................................................................. 311 Parte IV. Implementación de C-1 Capítulo 17. Especificación de C-1 ..................................................................... 315 17.1 Introducción .................................................................................... 315 17.2 Tipos estructurados ....................................................................... 316 17.2.1 Registros ................................................................................... 316 17.2.2 Vectores .................................................................................... 317 17.3 Declaración conjunta de variables y variables locales .............. 317 17.4 Nuevos operadores y delimitadores ........................................... 318 17.5 Subprogramas ................................................................................ 318 17.6 Asignación ...................................................................................... 319 17.7 Comentarios .................................................................................... 319 Capítulo 18. Análisis léxico y sintáctico de C-1 ............................................... 321 18.1 Introducción .................................................................................... 321 18.2 Análisis léxico ................................................................................. 321 18.3 Análisis sintáctico .......................................................................... 324 Capítulo 19. Análisis semántico de C-1 ............................................................. 331 19.1 Introducción .................................................................................... 331 19.2 La tabla de tipos ............................................................................. 331 19.3 La tabla de símbolos ...................................................................... 334 19.4 Análisis semántico ......................................................................... 338 19.4.1 Definición del tipo struct ....................................................... 339 19.4.2 Definición del tipo vector ...................................................... 342 19.4.3 Declaración de variables globales ......................................... 343 19.4.4 Declaración de variables locales ........................................... 348 19.4.5 Declaración de subprogramas ............................................... 352 19.4.6 Argumentos de subprogramas ............................................. 354 © Alfaomega - RC Libros ÍNDICE XV 19.4.7 Expresiones ............................................................................... 355 19.4.8 Condiciones .............................................................................. 362 19.4.9 Sentencia de asignación .......................................................... 364 19.4.10 Sentencia de retorno de una función ................................... 369 19.4.11 Sentencia de llamada a un procedimiento ......................... 369 19.4.12 Resto de sentencias ................................................................ 370 Capítulo 20. Generación de código de C-1 ......................................................... 371 20.1 Introducción .................................................................................... 371 20.2 CI de expresiones ............................................................................ 373 20.2.1 Suma, resta, producto, multiplicación, división y módulo ........ 373 20.2.2 CI para enteros ......................................................................... 374 20.2.3 CI para identificadores ............................................................ 374 20.2.4 CI para funciones ..................................................................... 375 20.2.5 CI para procedimientos ........................................................... 381 20.2.6 CI para campos de registros ................................................... 382 20.2.7 CI para elementos de un vector ............................................. 383 20.3 CI para asignaciones ....................................................................... 384 20.3.1 Asignación a una variable sencilla ........................................ 384 20.3.2 Asignación a un campo de un registro ................................. 384 20.3.3 Asignación a un elemento de un vector ............................... 384 20.4 Sentencias condicionales y bucles ................................................ 385 20.5 Sentencias para imprimir ............................................................... 386 20.6 Declaración de funciones y procedimientos ............................... 386 20.7 Finalización ...................................................................................... 388 20.8 Generación de código final ............................................................ 388 20.9 Ampliación para C-2 ...................................................................... 390 Parte V. Apéndices, bibliografía e índice alfabético Apéndice A. Herramientas .................................................................................... 395 A.1 Herramientas .................................................................................... 395 A.2 Instalación de las herramientas ..................................................... 398 © Alfaomega - RC Libros COMPILADORES XVI A.2.1 Java ............................................................................................. 398 A.2.2 JLex ............................................................................................ 398 A.2.3 CUP ............................................................................................ 398 A.2.4 ENS2001 .................................................................................... 398 A.3 Uso de las herramientas ................................................................. 399 A.3.1 Uso de JLex ............................................................................... 399 A.3.2 Uso de Cup ............................................................................... 404 Apéndice B. Código intermedio y final para C-1 en Ens2001 ........................ 409 B.1 Introducción ..................................................................................... 409 B.2 Tabla de código intermedio y final para Ens2001 ....................... 409 B.3 Ejemplo de programa en C-1 ......................................................... 412 Bibliografía ............................................................................................................. 419 Libros y manuales .................................................................................. 419 Software ................................................................................................... 420 Índice alfabético .....................................................................................................
Summary: Los microcontroladores PICmicro de Microchip han experimentado un importante aumento de presencia en el sector industrial. En lenguajes de programación destaca el desarrollo de un lenguaje C específico para un microcontrolador que permite obtener el máximo rendimiento del micro. Los programas de simulación permiten depurar casi hasta la perfección el diseño antes de ser construido, con un enorme ahorro de tiempo y costo. Uno de los mejores simuladores para microcontroladores es el ISIS de PROTEUS. Objetivo: Desarrollar en el lector los conocimientos básicos necesarios para manejar cada programa, apoyándolo con el mayor número de ejercicios y con su esfuerzo lograr la ampliación de conocimiento.
Holdings
Item type Current library Collection Call number Copy number Status Date due Barcode
Libro Libro CI Gustavo A. Madero Sala General Colección General TJ223 P76 G37 2008 EJ. 1 No para préstamo externo 0975T
Libro Libro CI Gustavo A. Madero Sala General Colección General TJ223 P76 G37 2008 EJ. 2 Available 0976T
Libro Libro CI Gustavo A. Madero Sala General Colección General TJ223 P76 G37 2008 EJ. 3 Available 0977T
Libro Libro CI Gustavo A. Madero Sala General Colección General TJ223 P76 G37 2008 EJ. 4 Available 0978T
Libro Libro CI Gustavo A. Madero Sala General Colección General TJ223 P76 G37 2008 EJ. 5 Available 0979T

Índice
Agradecimientos .................................................................................................. XVII
Prólogo ..................................................................................................................... XIX
Parte I. Teoría
Capítulo 1. Introducción ............................................................................................ 3
1.1 Definición de compilador .................................................................... 3
1.2 Estructura de un compilador .............................................................. 5
1.2.1 Análisis léxico ................................................................................. 7
1.2.2 Análisis sintáctico .......................................................................... 8
1.2.3 Análisis semántico ......................................................................... 9
1.2.4 Generación de código intermedio ............................................. 10
1.2.5 Generación de código final ......................................................... 13
1.2.6 Tablas de símbolos y de tipos .................................................... 13
1.2.7 Manejo de errores ........................................................................ 14
1.3 Fases del proceso de compilación ..................................................... 14
1.4 Herramientas y descripción del lenguaje ....................................... 16
Capítulo 2. Análisis léxico ...................................................................................... 17
2.1 Utilidad del análisis léxico ................................................................. 17
2.2 Funcionamiento .................................................................................. 18
2.3 Términos utilizados ............................................................................ 21
2.4 Especificación del analizador léxico ................................................. 22
2.5 Construcción de un analizador léxico .............................................. 23
COMPILADORES
VIII
2.5.1 Identificar las palabras reservadas ........................................... 23
2.5.2 Construir el diagrama de transiciones ..................................... 24
2.6 Ejercicios resueltos ............................................................................. 27
Ejercicio 2.1 ........................................................................................... 27
Ejercicio 2.2 ........................................................................................... 30
Capítulo 3.Análisis sintáctico ................................................................................ 33
3.1 Funciones del analizador sintáctico ................................................ 33
3.2 Diseño de gramáticas ........................................................................ 35
3.3 Dificultades para la creación de gramáticas ................................... 38
3.3.1 La recursividad ............................................................................ 38
3.3.2 La ambigüedad ............................................................................ 39
3.3.3 La asociatividad .......................................................................... 40
3.3.4 La precedencia ............................................................................. 41
3.3.5 La parentización .......................................................................... 41
3.4 Análisis sintáctico lineal .................................................................... 41
3.5 Diagramas de sintaxis ....................................................................... 42
3.6 Ejercicios resueltos ............................................................................. 46
Ejercicio 3.1 ........................................................................................... 46
Ejercicio 3.2 ........................................................................................... 47
Ejercicio 3.3 ........................................................................................... 48
Capítulo 4. Análisis sintáctico descendente ....................................................... 51
4.1 Introducción ........................................................................................ 51
4.2 Analizadores sintácticos predictivos ............................................... 54
4.3 Conjuntos de predicción y gramáticas LL(1) ................................. 55
4.3.1 Conjunto de primeros ................................................................. 56
4.3.2 Conjunto de siguientes ............................................................... 59
4.3.3 Conjunto de predicción y gramáticas LL(1) ............................ 60
4.4 Conversión a gramáticas LL(1) ........................................................ 64
4.4.1 Eliminación de la factorización por la izquierda .................... 65
4.4.2 Eliminación de la recursividad por la izquierda .................... 66
4.5 Analizadores sintácticos descendentes recursivos (ASDR) ......... 68
4.6 Implementación de ASDP’s .............................................................. 68
4.6.1 Construcción de la tabla de análisis ......................................... 69
© Alfaomega - RC Libros
ÍNDICE
IX
4.6.2 Algoritmo de análisis .................................................................. 71
4.7 Ejercicios resueltos .............................................................................. 74
Ejercicio 4.1 ............................................................................................ 74
Ejercicio 4.2 ............................................................................................ 75
Capítulo 5. Análisis sintáctico ascendente ........................................................... 79
5.1 Introducción ........................................................................................ 79
5.2 Algoritmo de desplazamiento y reducción ..................................... 80
5.2.1 Acción ACEPTAR ........................................................................ 82
5.2.2 Acción RECHAZAR .................................................................... 82
5.2.3 Método GOTO .............................................................................. 82
5.2.4 Acción REDUCIR ......................................................................... 82
5.2.5 Acción DESPLAZAR ................................................................... 82
5.2.6 Ejemplo de aplicación del algoritmo de desplazamiento
y reducción ............................................................................................ 82
5.3 Construcción de tablas de análisis sintáctico SLR .......................... 85
5.3.1 Elemento ....................................................................................... 85
5.3.2 Cierre o clausura .......................................................................... 86
5.3.3 Operación ir_a .............................................................................. 87
5.3.4 Construcción de la colección canónica de conjuntos de
elementos ............................................................................................... 87
5.3.5 Construcción de un autómata a partir de la colección
canónica .................................................................................................. 91
5.3.6 Construcción de la tabla de análisis a partir de un
autómata ................................................................................................ 92
5.3.7 Conflictos en las tablas SLR ........................................................ 95
5.4 Organigrama de las gramáticas ........................................................ 96
5.5 Ejercicios resueltos .............................................................................. 98
Ejercicio 5.1 ............................................................................................ 98
Ejercicio 5.2 .......................................................................................... 100
Capítulo 6. Tabla de tipos y de símbolos ........................................................... 105
6.1 Introducción ...................................................................................... 105
6.2 La tabla de tipos ................................................................................ 105
6.2.1 Implementación de la tabla de tipos ....................................... 108
© Alfaomega - RC Libros
COMPILADORES
X
6.2.2 Implementación de una tabla de tipos única ........................ 110
6.2.3 Implementación de una pila de tablas de tipos .................... 119
6.2.4 Dimensión y acceso a los elementos de los tipos ................. 123
6.3 La tabla de símbolos ........................................................................ 126
6.4 Ejercicios resueltos ........................................................................... 130
Ejercicio 6.1 ......................................................................................... 130
Capítulo 7. Análisis semántico ............................................................................ 137
7.1 Introducción ...................................................................................... 137
7.2 Atributos y acciones semánticas .................................................... 138
7.3 Tipos de atributos ............................................................................ 143
7.4 Notaciones para la especificación de un traductor ..................... 145
7.4.1 Definición dirigida por sintaxis (DDS) .................................. 145
7.4.2 Esquema de traducción (ETDS) .............................................. 147
7.5 Comprobaciones semánticas .......................................................... 150
7.6 Ejercicios resueltos ........................................................................... 151
Ejercicio 7.1 ......................................................................................... 151
Ejercicio 7.2 ......................................................................................... 153
Ejercicio 7.3 ......................................................................................... 154
Capítulo 8. Generación de código intermedio y final ..................................... 155
8.1 Introducción ...................................................................................... 155
8.2 Tipos de código intermedio ............................................................ 157
8.2.1 Código de tres direcciones ....................................................... 157
8.2.2 Código de máquina virtual de pila ........................................ 158
8.2.3 Operadores sobrecargados ...................................................... 159
8.3 Código intermedio para expresiones ............................................ 159
8.4 Código intermedio para asignaciones .......................................... 163
8.5 Sentencias de entrada y salida ....................................................... 165
8.6 Sentencia condicional ...................................................................... 165
8.7 Iteración tipo while .......................................................................... 169
8.8 Iteración tipo repeat-until y do-while ........................................... 171
8.9 Iteración tipo for ............................................................................... 172
8.10 La selección ..................................................................................... 174
8.11 Código intermedio para vectores ................................................ 175
© Alfaomega - RC Libros
ÍNDICE
XI
8.12 Código intermedio para registros ................................................ 178
8.13 Espacio de direcciones ................................................................... 179
8.14 Registro de activación (RA) ........................................................... 184
8.15 Secuencia de acciones en subprogramas no recursivos ............ 186
8.16 Secuencia de acciones en subprogramas recursivos .................. 198
8.16.1 Compilación del cuerpo del subprograma ........................... 203
8.16.2 Compilación de la llamada al subprograma ........................ 205
8.17 Secuencia de acciones en subprogramas locales ........................ 216
8.17.1 Encadenamiento de accesos ................................................... 217
8.17.2 Display ...................................................................................... 218
Parte II. Implementación de L-0
Capítulo 9. Especificación de L-0 ......................................................................... 221
9.1 Introducción ...................................................................................... 221
9.2 Instrucciones ...................................................................................... 222
9.3 Variables lógicas ............................................................................... 222
9.4 Operadores ........................................................................................ 223
9.5 Expresiones ........................................................................................ 223
9.6 Ejemplo de programa válido ........................................................... 223
Capítulo 10. Análisis léxico de L-0 ...................................................................... 225
10.1 Preparativos ..................................................................................... 225
10.2 Patrones ............................................................................................ 226
10.3 Tokens válidos ................................................................................. 226
Capítulo 11.Análisis sintáctico de L-0 ................................................................. 229
11.1 Preparativos ..................................................................................... 229
11.2 Inicialización y arranque ............................................................... 230
11.3 Situación de terminales y no terminales ...................................... 232
11.4 Sentencias ......................................................................................... 233
11.5 Expresiones ...................................................................................... 234
11.6 Asignación ....................................................................................... 235
11.7 Sentencias de escritura ................................................................... 235
© Alfaomega - RC Libros
COMPILADORES
XII
11.8 Tablas de verdad ............................................................................ 236
11.9 Funciones ........................................................................................ 236
Capítulo 12. Análisis semántico y generación de código de L-0 ................... 237
12.1 Preparativos .................................................................................... 237
12.2 Tabla de símbolos .......................................................................... 237
12.3 Tratamiento de expresiones ......................................................... 240
12.3.1 La función tautología ............................................................... 242
12.3.2 La función contradicción .......................................................... 244
12.3.3 La función decidible .................................................................. 244
12.4 Operaciones con tablas de verdad ............................................... 245
12.5 La asignación .................................................................................. 247
12.6 Operaciones de impresión ............................................................ 248
Parte III. Implementación de C-0
Capítulo 13. Especificación de C-0 ..................................................................... 253
13.1 Introducción .................................................................................... 253
13.2 Tokens .............................................................................................. 253
13.3 Constantes ....................................................................................... 254
13.4 Operadores y delimitadores ......................................................... 254
13.5 Identificadores y palabras reservadas ......................................... 254
13.6 Tipos de datos ................................................................................. 255
13.7 Sentencias de control de flujo ....................................................... 255
13.8 Instrucciones de entrada-salida ................................................... 255
13.9 Declaración de variables ............................................................... 255
13.10 Programa principal ...................................................................... 255
13.11 Sentencia if-then-else ................................................................... 255
13.12 Sentencia while ............................................................................. 256
13.13 Ejemplo de programa válido ...................................................... 256
Capítulo 14. Análisis léxico, sintáctico y semántico de C-0 ........................... 257
14.1 Análisis léxico ................................................................................. 257
14.2 Análisis sintáctico .......................................................................... 258
14.3 Análisis semántico ......................................................................... 263
© Alfaomega - RC Libros
ÍNDICE
XIII
Capítulo 15. Generación de código intermedio de C-0 .................................... 269
15.1 Introducción .................................................................................... 269
15.2 Código de tres direcciones ............................................................. 270
15.3 Espacio de direcciones ................................................................... 273
15.4 Asignación de direcciones a variables ......................................... 274
15.5 Asignación de direcciones a expresiones y condiciones ........... 275
15.6 CI de expresiones ............................................................................ 280
15.7 CI de condiciones ............................................................................ 283
15.8 CI de asignación .............................................................................. 284
15.9 CI de bloques if-then-else .............................................................. 286
15.10 CI de bloques while ...................................................................... 289
15.11 CI de putw ..................................................................................... 290
15.12 CI de puts ....................................................................................... 291
Capítulo 16. Generación de código final de C-0 ............................................... 297
16.1 Introducción .................................................................................... 297
16.2 Preparativos ..................................................................................... 297
16.3 Introducción a Ens2001 .................................................................. 298
16.4 CARGAR_DIRECCION op1 null res ........................................... 300
16.5 CARGAR_VALOR op1 null res .................................................... 301
16.6 SUMAR op1 op2 res ....................................................................... 301
16.7 RESTAR op1 op2 res ...................................................................... 302
16.8 MULTIPLICAR op1 op2 res .......................................................... 302
16.9 DIVIDIR op1 op2 res ...................................................................... 302
16.10 OR op1 op2 res .............................................................................. 302
16.11 AND op1 op2 res .......................................................................... 302
16.12 MAYOR op1 op2 res ..................................................................... 303
16.13 MENOR op1 op2 res ..................................................................... 303
16.14 IGUAL op1 op2 res ....................................................................... 303
16.15 DISTINTO op1 op2 res ................................................................. 304
16.16 ETIQUETA null null res............................................................... 304
16.17 SALTAR_CONDICION op1 null res ......................................... 304
16.18 SALTAR_ETIQUETA null null res ............................................. 305
© Alfaomega - RC Libros
COMPILADORES
XIV
16.19 IMPRIMIR_ENTERO op1 null null ........................................... 305
16.20 IMPRIMIR_CADENA op1 null null.......................................... 305
16.21 PONER_CADENA op1 null res ................................................. 305
16.22 Punto y final .................................................................................. 306
16.23 Posibles ampliaciones .................................................................. 311
Parte IV. Implementación de C-1
Capítulo 17. Especificación de C-1 ..................................................................... 315
17.1 Introducción .................................................................................... 315
17.2 Tipos estructurados ....................................................................... 316
17.2.1 Registros ................................................................................... 316
17.2.2 Vectores .................................................................................... 317
17.3 Declaración conjunta de variables y variables locales .............. 317
17.4 Nuevos operadores y delimitadores ........................................... 318
17.5 Subprogramas ................................................................................ 318
17.6 Asignación ...................................................................................... 319
17.7 Comentarios .................................................................................... 319
Capítulo 18. Análisis léxico y sintáctico de C-1 ............................................... 321
18.1 Introducción .................................................................................... 321
18.2 Análisis léxico ................................................................................. 321
18.3 Análisis sintáctico .......................................................................... 324
Capítulo 19. Análisis semántico de C-1 ............................................................. 331
19.1 Introducción .................................................................................... 331
19.2 La tabla de tipos ............................................................................. 331
19.3 La tabla de símbolos ...................................................................... 334
19.4 Análisis semántico ......................................................................... 338
19.4.1 Definición del tipo struct ....................................................... 339
19.4.2 Definición del tipo vector ...................................................... 342
19.4.3 Declaración de variables globales ......................................... 343
19.4.4 Declaración de variables locales ........................................... 348
19.4.5 Declaración de subprogramas ............................................... 352
19.4.6 Argumentos de subprogramas ............................................. 354
© Alfaomega - RC Libros
ÍNDICE
XV
19.4.7 Expresiones ............................................................................... 355
19.4.8 Condiciones .............................................................................. 362
19.4.9 Sentencia de asignación .......................................................... 364
19.4.10 Sentencia de retorno de una función ................................... 369
19.4.11 Sentencia de llamada a un procedimiento ......................... 369
19.4.12 Resto de sentencias ................................................................ 370
Capítulo 20. Generación de código de C-1 ......................................................... 371
20.1 Introducción .................................................................................... 371
20.2 CI de expresiones ............................................................................ 373
20.2.1 Suma, resta, producto, multiplicación, división y módulo ........ 373
20.2.2 CI para enteros ......................................................................... 374
20.2.3 CI para identificadores ............................................................ 374
20.2.4 CI para funciones ..................................................................... 375
20.2.5 CI para procedimientos ........................................................... 381
20.2.6 CI para campos de registros ................................................... 382
20.2.7 CI para elementos de un vector ............................................. 383
20.3 CI para asignaciones ....................................................................... 384
20.3.1 Asignación a una variable sencilla ........................................ 384
20.3.2 Asignación a un campo de un registro ................................. 384
20.3.3 Asignación a un elemento de un vector ............................... 384
20.4 Sentencias condicionales y bucles ................................................ 385
20.5 Sentencias para imprimir ............................................................... 386
20.6 Declaración de funciones y procedimientos ............................... 386
20.7 Finalización ...................................................................................... 388
20.8 Generación de código final ............................................................ 388
20.9 Ampliación para C-2 ...................................................................... 390
Parte V. Apéndices, bibliografía e índice alfabético
Apéndice A. Herramientas .................................................................................... 395
A.1 Herramientas .................................................................................... 395
A.2 Instalación de las herramientas ..................................................... 398
© Alfaomega - RC Libros
COMPILADORES
XVI
A.2.1 Java ............................................................................................. 398
A.2.2 JLex ............................................................................................ 398
A.2.3 CUP ............................................................................................ 398
A.2.4 ENS2001 .................................................................................... 398
A.3 Uso de las herramientas ................................................................. 399
A.3.1 Uso de JLex ............................................................................... 399
A.3.2 Uso de Cup ............................................................................... 404
Apéndice B. Código intermedio y final para C-1 en Ens2001 ........................ 409
B.1 Introducción ..................................................................................... 409
B.2 Tabla de código intermedio y final para Ens2001 ....................... 409
B.3 Ejemplo de programa en C-1 ......................................................... 412
Bibliografía ............................................................................................................. 419
Libros y manuales .................................................................................. 419
Software ................................................................................................... 420
Índice alfabético .....................................................................................................

Los microcontroladores PICmicro de Microchip han experimentado un importante aumento de presencia en el sector industrial.
En lenguajes de programación destaca el desarrollo de un lenguaje C específico para un microcontrolador que permite obtener el máximo rendimiento del micro.
Los programas de simulación permiten depurar casi hasta la perfección el diseño antes de ser construido, con un enorme ahorro de tiempo y costo. Uno de los mejores simuladores para microcontroladores es el ISIS de PROTEUS.

Objetivo:

Desarrollar en el lector los conocimientos básicos necesarios para manejar cada programa, apoyándolo con el mayor número de ejercicios y con su esfuerzo lograr la ampliación de conocimiento.

Ingeniería en Tecnologías de la Información y Comunicación

There are no comments on this title.

to post a comment.

Click on an image to view it in the image viewer

Local cover image

Libros electrónicos

eLibro eLibro

Recursos de investigación libres

image host image host image host image host image host image host image host image host image host image host

Recursos informativos



TecNM | Tecnológico Nacional de México

© 2025 by Biblionexus