关键词不能为空

当前您在: 主页 > 英语 >

古文字翻译ARM汇编伪指令宏的用法详解_MACRO-MEND_.

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-01-28 01:54
tags:

古文字翻译-simond

2021年1月28日发(作者:superboy)



ARM


汇编伪指令宏的用法详解


(MACRO-MEND

< p>
宏是一段独立的程序代码,它是通过伪指令定义的,在程序中使用宏指令即可


调用宏。当程序被汇编时,汇编程序将对每个调用进行展开,用宏定义取代源程序


中的 宏指令。



MACRO



MEND


语法格式:



MACRO


[$$ label] macroname{ $$ parameter1



$$ parameter



…… }



指令序列



MEND


MACRO


伪操作标识宏定义的开始,


MEND


标识宏定义的结束。用


MACRO



MEND


定义一段代码,称为宏定 义体,这样在程序中就可以通过宏指令多次调


用该代码段。



其中,


$$ label


在宏指令被展开时,


label

< br>会被替换成相应的符号,通常是一个


标号。在一个符号前使用

$$


表示程序被汇编时将使用相应的值来替代


$$


后的符号。



macroname


为所定义的宏的名称。



$$param eter


为宏指令的参数。当宏指令被展开时将被替换成相应的值,类似于


函数中的形式参数,可以在宏定义时为参数指定相应的默认值。


< p>
宏指令的使用方式和功能与子程序有些相似,子程序可以提供模块化的程序设


计、节省存储空间并提高运行速度。但在使用子程序结构时需要保护现场,从而增


加了 系统的开销,因此,在代码较短且需要传递的参数较多时,可以使用宏汇编技


术。



首先使用


MACRO



MEND


等伪操作定义宏。包含在


MACRO



MEND





间的代码段称为宏定义体,在


MACRO

伪操作之后的一行声明宏的原型(包含宏


名、所需的参数),然后就可以在汇编程序 中通过宏名来调用它。在源程序被汇编


时,汇编器将宏调用展开,用宏定义体代替源程序 中的宏定义的名称,并用实际参


数值代替宏定义时的形式参数。



宏定义中的


$$label


是一个可选参 数。当宏定义体中用到多个标号时,可以使用


类似


$$label .$$internallabel


的标号命名规则使程序易读。



MACRO



MEND


伪操作可以嵌套使用。



使用示例:



MACRO


$$HandlerLabel HANDLER $$HandleLabel


;宏的名称为


HANDLER


,有< /p>


1


个参



$$Ha ndleLabel


$$HandlerLabel


sub sp,sp,#4


stmfd sp!,{r0}


;decrement sp(to store jump address ;PUSH the work register to stack(lr does not


push because it return to original address load the address of HandleXXX to r0 load the


contents(service routine start address of HandleXXX store the contents(ISR of


HandleXXX to stack POP the work register and pc(jump to ISR ldr r0,=$$HandleLabel


ldr r0,[r0] str r0,[sp,#4] ldmfd sp!,{r0,pc}


MEND


;在程序中调用该宏



古文字翻译-simond


古文字翻译-simond


古文字翻译-simond


古文字翻译-simond


古文字翻译-simond


古文字翻译-simond


古文字翻译-simond


古文字翻译-simond



本文更新与2021-01-28 01:54,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/576104.html

ARM汇编伪指令宏的用法详解_MACRO-MEND_.的相关文章