macros

Páginas: 6 (1413 palabras) Publicado: 14 de septiembre de 2014
Procesadores de Macros
Parte 2
MIS. Lizbeth Alejandra Hernández González
Programación de Sistemas

Opciones de diseño para el procesador de
macros
• El algoritmo de la figura 4.5 no funciona bien si
aparece una proposición de invocación a
macros en el cuerpo de una instrucción a
macros.
• A menudo es deseable admitir esta utilización
de las macros.
• Aunque el uso más común de lasinstrucciones a
macros es en ensamblador, hay otras
posibilidades.

Figura 4.11
10
15
20
25

RDBUFF MACRO &BUFADR,&RECLTH,&INDEV
MACRO QUE LEE UN REGISTRO EN EL BUFFER

30

CLEAR

X

35

CLEAR

A

50
45

CLEAR
+LDT

50

$L00P

RDCHAR

S
# 4096

LEE EL CARACTER EN EL REGISTRO A

A,S

EXAMINA SI HAY FIN DE REGISTRO

$EX IT

SALE DEL CICLO SI ES FIN DEREGISTRO

&BUFADR,X

ALMACENA EL CARACTER EN EL BUFFER

T

REPITE EL CICLO A MENOS QUE SE HAYA

C0MPR

70

JEQ

75

STCH

80

TIXR

85

JLT

$L00P

STX

&RECLTH

95

$EXIT

MEND

ASIGNA LA LONGITUD MAXIMA DEL
REGISTRO

&INDEV

65

90

LIMPIA EL CONTADOR DE CICLO

ALCANZADO LA LONGITUD MAXIMA
GUARDA LA LONGITUD DEL REGISTRO

5
10
15
20
2530
35
40

RDCHAR MACRO &IN
. MACRO QUE LEE UN CARACTER EN EL REGISTRO A

TD =X'&IN' PRUEBA EL DISPOSITIVO DE ENTRADA
JEQ *-3
REPITE EL CICLO HASTA QUE ESTE LISTO
RD =X'&IN' LEE EL CARACTER
MEND
(b)
RDBUFF BUFFER,LENGTH,F1
(c)
FIGURA 4.11 Ejemplo de invocaciones a macros anidadas.

• Suponemos que ya existe una macroinstrucción
relacionada (RDCHAR).
• El objetivo de RDCHAR esleer un carácter de
un dispositivo especificado en el registro A,
cuidando el ciclo de prueba y espera necesario.
• RDCHAR podría escribirse en un momento
distinto o por otro programador.

problemas ocasionados por esas
proposiciones de invocación a macros
• Expansión de macros recursiva
▫ la invocación a una macro por otra

• el diseño del procesador de macros analizado
no puedemanejar tales invocaciones de macros
• ¿por qué?

• Siguiendo el código 4.5 para el programa 4.11
tendríamos para la primera llamada a EXPANDE:
TABARG:
Parámetro
Valor
1
BUFFER
2
LENGTH
3
F1
4
(sin usar)

• EXPANSION=TRUE

50

$L00P

RDCHAR

&INDEV

LEE EL CARACTER EN EL REGISTRO A

• PROCESA-LINEA llamaría de nuevo a EXPANDE, y
esta vez, TABARG sería:
TABARG:
Parámetro1
2

Valor
FI
(sin usar)

• el procesador de macros "olvidará" que estaba a
la mitad de la expansión de una macro al
encontrar la proposición RDCHAR
• los argumentos de la invocación a macros
original (RDBUFF) se perdieron (los valores de
TABARG se superpusieron)
• podría incorporarse la misma lógica en una
estructura de ciclo, en lugar de llamadas
recursivas.

• Estosproblemas no son difíciles de resolver si
el procesador de macros está escrito en un
lenguaje de programación (como Pascal o C)
que permita hacer llamadas recursivas.

Procesadores de macros de aplicación general
• Esos procesadores de macros a menudo se
combinan, o se relacionan estrechamente, con
el ensamblador.
• Ventajas aplicación general para el procesador
de macros:
▫ El programador nonecesita aprender un
dispositivo de macros diferente para cada
compilador o lenguaje
▫ Se ahorra mucho tiempo y dinero de prácticas.

• Pero…
▫ Los costos relacionados con la producción de un
procesador de macros de aplicación general son
algo superiores

• Hay relativamente pocos procesadores de
macros de aplicación general.
▫ El gran número de detalles
▫ Por ejemplo, un procesadorde macros en general
debe ignorar los comentarios

▫ dispositivos de agrupación de términos, expresiones o
proposiciones:
 ()
 []
 Begin end

▫ Un problema más general es el de los componentes
léxicos o tokens (identificadores, constantes,
operadores y palabras clave)
 := asignación en Pascal
 = asignación en C

▫ Definir si espacios en blanco son significativos o no

▫...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Macro
  • macros
  • Macro
  • macro
  • Macro
  • Macro
  • Macro
  • Macro

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS