- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DSP原理及应用5-2
TMS320C54x DSP 结构、原理及应用 孔莹莹 yayako_zy@ 宏语言 宏定义 宏调用 宏展开 宏指令与子程序的异同 宏指令和子程序都可以被多次调用; 子程序汇编成目标代码的过程只进行一次;用到宏指令的地方,都要对宏指令进行汇编; 子程序无参数,调用前应事先设置好寄存器等;宏指令可以使用带参数调用; 区别于高级语言:高级语言的子程序可以带参数(又称虚拟自变量、形参或哑元)调用。 宏定义的位置与格式 宏指令的位置:宏指令可以在源程序的任何位置上定义,当然必须在用到它之前先定义好。宏定义也可以嵌套,即在一条宏指令中调用其他的宏指令。 宏定义的格式如下: macname .macro[Parameter 1][,…,parameter n] model statements or macrodirectioves [.mexit] .endm 其中,macname 宏指令名,必须放在源程序 语句的标号位置; 宏定义的位置与格式(续) .macro 作为宏定义第1行的记号,必须 放在助记符操作码位置; [parameters] 是任选的替代符号,就像 是宏指令的操作数; Model statements 这些都是每次宏调用 时要执行的指令或汇编命令; Macro directives 用于控制宏指令展开的 命令; 宏定义的位置与格式(续) [.mexit] 相当于一条goto .endm语句。 当检测确认宏展开将失败时, .mexit命令是有用的; .endm 结束宏定义。 宏指令定义好之后,就可以在后面的源程序中调用它了。 宏调用的格式 宏调用的格式如下: [ label ][:] macname [parameter 1] [,…,parameter n] 其中,标号是任选项,macname为宏指令名,写在助记符操作码的位置上。其后是替代的参数,参数的数目应与宏指令定义的相等。 当源程序中调用宏指令时,汇编时就将宏指令展开。在宏展开时,汇编器将实在参数传递给宏参数,再用宏定义替代宏调用语句,并对其进行汇编。 宏定义与调用的例子 [例6]宏定义、宏调用和宏展开举例。 1 * 2 3 * add3 4 * 5 * ADDRP=p1+p2+p3 6 7 add3 .macro p1, p2, p3, ADDRP 8 宏定义与调用的例子(续) 9 LD p1, A 10 ADD p2, A 11 ADD p3, A 12 STL A, ADDRP 13 .endm 14 15 16 .global abc, def, ghi, adr 17 宏定义与调用的例子(续) 18 000000 add3 abc, def, ghi, adr 1 1 000000 1000! LD abc, A 1 000001 0000! ADD def, A 1 000002 0000! ADD ghi, A 1 000003 8000! STL A, adr 3.6 链接 链接器各个目标文件 将各个段配置到目标系统的物理存储器中; 对各个符号和段进行重新定位,并给它们指定一个最终的物理地址; 解决输入文件之间未定义的外部引用。 运行链接器的三种方法 1、键入命令:lnk500 2、键入命令: lnk500 file1.obj file2.obj –o link.out 3、键入命令: lnk500 filename.cmd 链接器选项 常用链接器选项见表3-5; 链接器选项前必须加一短划“-”; 选项之间可以用空格分开; 除 -i 选项外,其它选项先后顺序并不重要。 表3-7 链接器lnk500常用选项 表3-7 链接器lnk500常用选项 链接器命令: lnk500 a.obj b.obj -m porg.map -o porg.out 写成链接器命令文件fn.cmd为: a.obj /*First object file linked*/ b.obj /*second object
文档评论(0)