宏定义MACRO请教

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

本版积分规则

28

主题

137

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部