MACRO $HandlerLabel HANDLER $HandleLabel $HandlerLabel sub sp,sp,#4 ;decrement sp(to store jump address) stmfd sp!,{r0} USH the work register to stack(lr do not push because it return to original address) ldr r0,=$HandleLabel;load the address of HandleXXX to r0 ldr r0,[r0] ;load the contents(service routine start address) of HandleXXX str r0,[sp,#4] ;store the contents(ISR) of HandleXXX to stack ldmfd sp!,{r0,pc} OP the work register and pc(jump to ISR) MEND ;============================================================= 这是44b0上的启动代码 /MACRO……MEND 功能:标志一下宏的定义。 格式:MACRO Macro_prototype MEND 宏表达式的格式如下: {$label} macroname {$ parameter{,parameter2}…} 其中: $ label 参数,在宏使用时,被给定的符号替代。 Macroname 宏的名称,并不一定以一条指令或者符号名开始。 $parameter 在宏使用时,被替代的参数,格式为:$parameter=“default value” 在宏体中,参数如:$parameter和变量一样使用,在被宏引用时,被赋于新值,参数必须用“$”符号加于区别。$label在宏定义内部符号时很有用,可以看作宏的参数。使用“|”符号作为使用一个参数缺省值的变量,如果使用的是一个空格符串,将省去该变量。在使用内部标志的宏定义中,将内部标志定义为带后缀的标志,将会很有用。如果在扩展中空间不够,可以作为参数和后继文字之间或者参数之间使用圆点隔开,但在文本和后继参数之间不能使用圆点。宏可以定义局部变量的范围。宏还可以嵌套使用。 如果我赋值 UDF_INS_HANDLER HANDLER UdfInsVector 问题是: 上面调用UDF_INS_HANDLER时UdfInsVector为参数($HandleLabel), MACRO $HandlerLabel HANDLER $HandleLabel $HandlerLabel 这儿这个$HandlerLabel是干什么使用的? |