常见的 宏定义 格式如下:

macro 格式:

.macro 宏名 参数名列表   @伪指令.macro定义一个宏
指令序列
.endm                   @.endm表示宏结束

如果宏使用参数,那么在指令序列中使用该参数时,需要添加前缀“\”。
宏定义时的参数还可以使用默认值。
可以使用.exitm伪指令来退出宏。

例:

.macro SHIFTLEFT a, b
.if \b < 0
MOV \a, \a, ASR #-\b
.exitm
.endif
MOV \a, \a, LSL #\b
.endm

define 格式:

#define 标识符 值

例 1:

#define    UND_Stack_Size    0x00000020
#define    SVC_Stack_Size    0x00000020
#define    ABT_Stack_Size    0x00000020
#define    FIQ_Stack_Size    0x00000020
#define    IRQ_Stack_Size    0x00040000
#define    USR_Stack_Size    0x00200000

例 2:

//如果值比较长,可以使用 \ 来分行写
#define    ISR_Stack_Size    (UND_Stack_Size + SVC_Stack_Size + \
                        ABT_Stack_Size + FIQ_Stack_Size + \
                        IRQ_Stack_Size)