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