B_1.gif (1135 bytes)

INICIO WEB

B_2.gif (1184 bytes)

             

DIRECTIVAS DEL PREPROCESADOR TIPO C

             

Las siguientes directivas del preprocesador de lenguaje C se encuentran disponibles:

           

Estas directivas son las siguientes: #define, #elif, #else, #endif, #error, #if, #ifdef, #ifndef, #include, #message y #undef.

           
Sintaxis
         
#define label text
#elif condition
#else
#endif
#error "message"
#if condition
#ifdef label
#ifndef label
#include {"filename" | <filename>}
#message "message"
#undef label
             
Parámetros
           
  • condition: Una de la siguientes.
        

Una expresión absoluta: La expresión no debe contener referencias hacia delante o externas y cualquier valor distinto de cero es considerado como verdadero.

string1 = string2 : La condición es verdadera si la cadena1 y la cadena2 tienen la misma longitud y contenido.

string1 < > string2 : La condición es verdadera si la cadena1 y la cadena2 tienen distinta longitud o contenido.

         
  • filename: Nombre del archivo que se va a incluir.
  • label: Símbolo a definir, anular definición o a examinar (tested).
  • message: Texto que se va a visualizar.
  • text: Valor que se va a asignar.
         

Descripción

           

Etiquetas de definición y de anulación de definición

Utilice #define para definir una etiqueta temporal.

#define label value

es similar a:

label VAR value

          

Utilice #undef para anular la definición de una etiqueta; el efecto es como si no hubiera sido definido.

            

Directivas condicionales

Utilice las directivas #if ... #else ... #endif para controlar el proceso de ensamblado. Si la condición que sigue a la directiva #if no es verdadera, las siguientes instrucciones no generarán ningún código hasta que se encuentre una directiva #endif o #else.

Todas las directivas de ensamblador (excepto END) e inclusiones de archivos pueden ser deshabilitadas por las directivas condicionales. Cada directiva #if debe acabar con la directiva #endif. La directiva #else es opcional, y si se usa, debe estar en un bloque #if ... #endif.

Los bloques #if ... #endif e #if ... #else ... #endif pueden estar anidados.

               

Utilice #ifdef para ensamblar instrucciones por encima de la siguiente directiva #else o #endif sólo si el símbolo está definido.

        

Utilice #ifndef para ensamblar instrucciones por encima de la siguiente directiva #else o #endif sólo si el símbolo no está definido.

          

Utilice #include para insertar el contenido de un archivo en un archivo fuente en un punto específico.

          

Visualización de errores

Utilice #error para forzar al ensamblador a generar un error.

           

Definición de comentarios

Utilice /*...*/ para comentar secciones del listado de ensamblador.

Utilice // para marcar el resto de la línea como comentario.

          

Ejemplos

            

Utilización de las directivas condicionales

El siguiente ejemplo define las etiquetas "tweek" y "adjust". Si "adjust" está definido, entonces el registro 16 es decrementado por un valor que depende de "adjust", en este caso 30.

           

#define         tweek    1

#define         adjust    3

          

#ifdef            tweek

#if                adjust = 1

                   SUBI      R16, 4

#elif              adjust = 2

                   SUBI      R16, 20

#elif              adjust = 3

                   SUBI      R16, 30

#endif

#endif                                             /* ifdef tweek*/
           

Inclusión de un archivo fuente

El siguiente ejemplo utiliza #include para incluir un archivo que define macros en un archivo fuente. Por ejemplo, las siguientes macros pueden definirse en "macros.s90".

         

xch       MACRO        a, b

            PUSH             a

            MOV              a, b

            POP               b

            ENDM
           

Las definiciones de las macros pueden entonces ser incluidas, utilizando #include, como en el siguiente ejemplo.

        

                   NAME         include

           

; standard macro definitions

#include "macros.s90"
       

; program

main:            xch              R16, R17

                   RET

                   END main
              
                                         

B_1.gif (1135 bytes)

B_3.gif (1151 bytes)

B_2.gif (1184 bytes)