Si buscas hosting web, dominios web, correos empresariales o crear páginas web gratis, ingresa a PaginaMX
Por otro lado, si buscas crear códigos qr online ingresa al Creador de Códigos QR más potente que existe


4. MACROLENGUAJES Y MACROPROCESADORES

4.1 Macroinstrucciones


Una macroinstrucción o macro, se refiere en el mundo de la informática a una instrucción en lenguaje ensamblador que es equivalente a otro grupo de instrucciones que, en conjunto, realizan una tarea más compleja. Esta equivalencia es definida por el programador con objeto de simplificar la tarea de escribir programas y reutilizar el código escrito. Este concepto es similar al de la subrutina pero se diferencia de ésta en su funcionamiento. Una macroinstrucción que aparece en un fichero fuente, es sustituida por el programa ensamblador en el fichero objeto por el grupo de instrucciones en lenguaje ensamblador que se han definido. Esta acción se denomina comúnmente expandir la macro.

4.2 Particularidades de los macros
4.2.1 Argumentos de macroinstrucción


Los argumentos son símbolos utilizados en el cuerpo de la macro. La primera línea de la definición de una macroinstrucción esta constituida por la directiva macro, con la que se declara el nombre de la macro y sus argumentos, si los hay. La ultima línea la ocupa la directiva endm, con la que se le comunica al ensamblador que la macro ha llegado a su fin. Por cada directiva macro debe haber una directiva endm.

4.2.2 Expansión condicional de macros
  • En esta sección se presenta un conjunto típico de proposiciones de expansión de macros condicional.
  • Figura 4.8. &E0R, especifica un código de carácter hexadecimal que marca el final de un registro, y &MAXLTH, que especifica la longitud máxima de registro que se puede leer.
  • (Como se verá más adelante, es posible omitir cualquiera de los dos parámetros en una invocación de REDBUFF.)
  • Las proposiciones de las líneas 44 a 48 de esta definición ilustran una estructura condicional (IF)
  • La figura 4.8 (b-d) muestra la expansión de tres diferentes proposiciones de invocación a macros que ilustran la operación de las proposiciones IF de la figura 4.8 (a).



  • El procesador de macros debe mantener una tabla de símbolos que contenga los valores de todas las variables utilizadas en el momento del procesamiento.
  • La prueba de expresiones booleanas en las proposiciones IF se produce en el momento en que se expanden las macros.
4.2.3 Macrollamadas dentro de macroinstrucciones

Con el fin de evitar al programador la tediosa repetición de partes idénticas de un programa, los ensambladores y compiladores cuentan con macroprocesadores que permiten definir una abreviatura para representar una parte de un programa y utilizar esa abreviatura cuantas veces sea necesario. Para utilizar una macro, primero hay que declararla. En la declaración se establece el nombre que se le dará a la macro y el conjunto de instrucciones que representará. Es tan común el empleo de macroinstrucciones que se les considera como una extensión de los lenguajes. De manera similar se considera al procesador de macroinstrucciones o macroprocesador como una extensión del ensamblador o compilador utilizado. El macroprocesador se encarga, en una primera pasada, de registrar todas las declaraciones de macros y de rastrear el programa fuente para detectar todas las macrollamadas. En cada lugar donde encuentre una macro llamada, el macroprocesador hará la sustitución por las instrucciones correspondientes. A este proceso de sustitución se le denomina expansión de la macro. El macroprocesador elabora dos tablas para el manejo de las macros. Y así también poderlos ejecutar.

4.2.4 Macroinstrucciones que definen macros

La definición de macroinstrucciones es opcional.

Puede definir una macroinstrucción de una de estas dos formas:

Con la función Registro

La función Registro permite definir una macroinstrucción directamente en la imagen de planificación. Por tanto, es más rápida que la función Crear. Los operandos pueden ser textos de líneas de la tabla de planificación o valores numéricos. Los operadores se visualizan en la barra de pulsadores. Los operadores estándar se suministran para el cálculo de balance de stocks, producción, cobertura, y totales históricos (véase Macroinstrucciones para balance de stock, fabricación, cobertura y totales históricos).

Con la función Crear

La función Crear permite definir una macroinstrucción en una ventana separada. Por tanto, ve exactamente cómo se calcula cada macroinstrucción. También puede fijar dos indicadores que determinen cómo se maneja la macroinstrucción en la tabla de planificación. Los operandos pueden ser textos de líneas de la tabla de planificación o valores numéricos. Esta función es adecuada para macroinstrucciones complicados que, probablemente, están formadas por varias líneas.

4.3. Implementación
4.3.1 Implementación restringida. Algoritmo de dos pasos

Paso 1: Definir símbolos y literales
  1. Determinar longitud de la instrucción de máquina
  2. Llevar un contador de posición
  3. Recordar los símbolos encontrados hasta el paso 2
  4. Procesar algunas pseudo instrucciones
  5. Recordad las literales
Paso 2: Generar programa objeto
  1. Establecer el valor para los símbolos
  2. Generar instrucciones
  3. Generar datos
  4. Procesar pseudo instrucciones
4.3.2 Un algoritmo de una posada

 
4.3.3 Implementación de macrollamadas dentro de macros

La utilización de macros posibilita la reducción del tamaño del código fuente, aunque el código objeto tiende a ser mayor que cuando se utilizan funciones.

Es tan común el empleo de macroinstrucciones se les considera como una extensión de los lenguajes. De manera similar se considera al procesador de macroinstrucciones o macroprocesador como una extensión del ensamblador o compilador utilizado.

El macroprocesador se encarga, en una primera pasada, de registrar todas las declaraciones de macros y de rastrear el programa fuente para detectar todas las macrollamadas. En cada lugar donde encuentre una macrollamada, el macroprocesador hará la sustitución por las instrucciones correspondientes. A este proceso de sustitución se le denomina expansión de la macro.

El macroprocesador elabora dos tablas para el manejo de las macros:

Una tabla de macronombres que consiste de los nombres de las macros y un índice que le permite localizar la definición de la macro en otra tabla llamada tabla de macrodefiniciones

4.3.4 Implementación dentro de un ensamblador

Una posible implementación de un macro procesador consiste en:
  1. Reconocimiento de la macro. Se establecen los marcadores dentro de los cuales vivirá el código (macro y endmacro).
  2. Almacenamiento de la definición de la macro. El macro procesador deberá ser capaz de recuperar el código definido para expandirlo en una macro.
  3. Reconocimiento de llamadas. Se debe distinguir entre macros e instrucciones invocadas.
  4. Expansión de llamadas y argumentos. El procesador debe sustituir todas las llamadas
© 2025

26183