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 | ||||
|
||||
|
||||
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 | ||||