DSP汇编伪指令集讲解.ppt
《DSP汇编伪指令集讲解.ppt》由会员分享,可在线阅读,更多相关《DSP汇编伪指令集讲解.ppt(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、一一 相关的概念:相关的概念:v1.伪指令伪指令宏指令宏指令汇编指令汇编指令伪指令伪指令:v是在汇编和连接的时候提供控制信息和数据,并不产生目标代码。宏指令宏指令:v用户自己创建的指令,在汇编时将其展开并汇编为对应的目标代码。汇编指令汇编指令:v在汇编时将产生一一对应的目标代码。v2.段段页页段段:目标文件的最小单位称为段,它是在存储器中占有连续空间的代码块或数据块。页:页:64K的数据存储器可以分为512个数据页,每页的大小是128字。v3. 输出段:输出段:在SECTIONS伪指令描述的输出文件中定义的段,这些段被定义好了内容以及怎么被分配。v4.源列表文件:源列表文件:将源文件进行汇编,
2、在产生目标文件的同时,还可以产生源列表文件。它是在汇编器对源程序进行汇编后产生的目标代码和源语句的列表文件。可以优化编译器输出。v5. 宏定义与子程序的区别:宏定义与子程序的区别:宏定义宏定义 为了简化汇编语言源程序的书写,通常把一些出现较为频繁的程序段定义为宏指令,当程序需要被执行时,只需要一条宏调用语句。使用宏指令的优点在于可以有效的缩短源程序的长度,节省代码占用内存空间,使得代码易读,同时减少了重复书写引起的错误。子程序子程序 是一个程序段,在程序中通过跳转指令调用,在每次调用的时候,都需要把整个子程序复制到内存中运行,占用更多的内存空间。v6. SPC介绍介绍:汇编器为每个段保留一个独
3、立的程序计数器(SPC),汇编器从0地址开始处理每一个段,同一个段均按顺序存放。连接器根据每个段在内存图的最后位置进行再定位。二二. DSP汇编的工作原理:汇编的工作原理:1. 汇编编译连接:结合图进行讲述2. COFF文件格式文件格式:Common Object File Format 使用汇编器可以将汇编语言源程序汇编成为目标文件,用连接器将若干个目标文件连接成一个可以被TMS320C1X/C2000/C5X芯片执行的可执行文件。这些目标文件的格式称为通用目标文件格式COFF。COFF文件总包括3个默认的段:文本段(.text):通常包括可执行代码。数据段(.data):通常包括已初始化的
4、数据。预留段(.bss):通常保留用于未初始化变量的空间。三三. 伪指令的功能伪指令的功能伪指令的功能包括:伪指令的功能包括:v1.把代码和数据汇编到指定的段。v2.为未定义的变量保存空间。v3.控制列表文件。v4.分配存储器。v5.汇编条件块。v6.定义全局变量。v7.指定汇编器能得到的宏。v8.检查符号调试信息。v1.段定义伪指令:把汇编程序的各个部分与适当的段(数据块或程序块)联系起来。.bss, .data, .text, .sect, .usect;v2.初始化常数伪指令:在当前段中汇编数值。.bes, .space, .byte, .field, .float, .bfloat,
5、.int .word, .long, .blong, .string;v3.段程序计数器排列伪指令:使段程序计数器SPC指向预定的位置(例如页边界)。.align, .even;v4.输出列表格式伪指令:控制列表文件的格式。.drlist, .drnolist, .list, .fcnolist, .length, .width,.list, .nolist, .mlist, .mnolist, .opinion, .page, .sslist, .ssnolist, .tab, .title四四. 伪指令的分类伪指令的分类v5.引用其他文件伪指令:提供或者获取文件的信息。v.copy, .i
6、nclude, .global, .def, .ref, .mlib; v6.条件汇编伪指令:v.if, .elseif, .else, .endif, .loop, .break, v.endloop;v7.汇编时的符号伪指令:把自定义的符号等同于常数值或者字符串;v.asg, .eval, .set, .equ, .struct, .endstruct,v .newblockv8.其他伪指令:.end, .label, .mmregs, .port, .sblock, v.version, .emsg, .wmsg;五五. 常用的伪指令的讲解常用的伪指令的讲解:v1 .alignv用途:用
7、途:.align伪指令重置短程序计数器(SPC),使其指向下一个页边界,以保证后面的代码从一个数据页开始。汇编器将原页中间的未用空间用含NOP指令的字填充,一直填到该页边界。v例5.1 v00000004 .byte4 ;0页:00000079Hv0080 .align ;从下一页00080H开始v00804572 .string “Error” ; “Er”v0081726F ; “ro”v00827200 ; “r”v0100.align ;从下一页00100H开始v01000006 .byte6新的一页v2 .bes 在当前段中保留一个指定数目的位数,并用0填充。用位数(n*16)可以保
8、留n个字单元。v例5.2v00070100.word 100h, 200hv00080200v0009 Res_1.space 17v000B000F.word 15v000C Res_2.bes 20v000E00BA.byte 0BAhv000F Res_3.space 7*16v3 .bssv 用法: .bss 符号,字长符号,字长, 块标志块标志v.bss 该指令表示在RAM中保留空间。v(1)符号是一个必要参数,它指向.bss保留空间的第一个地址。字长也是必需参数,它是一个绝对表达式,表示汇编在.bss段内分配多个字。v(2)字长也是必需参数,它是一个绝对表达式,表示汇编器在.bss
9、段内分配多个字。v(3)块标志是可选参数,如果不指定块标志或指定为0,则汇编器在当前.bss段SPC处分配空间;如果块标志为1,则汇编器将检查当前SPC和页边界之间是否有足够的空间为变量分配,若有就连续分配,若无就从下页开始分配。v4 .copy, .include.copy, .include告诉编译器从其他文件中读入源语句。区别在于:.copy读入的源语句将在列表文件中列出,而.include伪指令读入的不在列表文件中列出。当汇编器遇到.copy和和 .include伪指令时,将停止汇编当前的源文件语句,而去编译.copy和和 .include文件中的语句,然后继续汇编.copy和和 .i
10、nclude后开始的源文件语句。v5 .data , .text.data是数据段定义伪指令。它告诉汇编器把源代码汇编到.data段中,且.data成为当前段。该段通常用来存放数据表或初始化前的变量。 .text:定义.text段中的代码部分,该部分为可执行代码。.text段是默认段,若汇编开始不指定其他段,就自动汇编到该段。v6 .title 用法:用法:.title “字符串字符串” 该伪指令为每一页输出列表文件打印标题(字符串的内容)。字符串不能超过65个字符,汇编器在随后的页面中打印出标题。其作用是生成标志符号,方便通过用反汇编器结合.title所所定义字符串来观察生成的*.out文件
11、的代码。v7 .def , .ref , .global .def , .ref, .global 伪指令所指定的符号为全局符号,这些全局符号可以在外部定义或在外部被引用。.def指定在当前模块中定义且可以在其他模块中使用的符号。汇编器将该符号引入符号表。.ref指定一个或多个在当前模块中使用但在其他模块中定义的符号。一般与.def定义的符号对应。汇编器将该符号标记为未定义的外部符号放入目标符号表,由连接器在连接时处理该符号的定义。.global同时具备.def , .ref的功能,需要时可代替它们。v8 .sect , .usect - 8.1 .usect用法: 符号名符号名 .usect
12、 “段名段名”,字长,字长, 块边界块边界 .usect为一个未命名段中的变量保留空间。类似.bss伪指令(都为保留空间,但.usect可以在内存中任意定义,而.bss则是独立的)。(1)符号名符号名指向.usect指定的第一个单元,它代表所预留空间的变量名。(2)段名段名告诉编译器从哪一个命名段开始保留空间。段名放在双引号内,前8个字符有效。(3)字长字长定义了该段保留的字数空间,可以用表达式表示。(4)块边界块边界为可选项,如果为非0,则改段为分块段。表示在进行地址分配时,尽量不超过一页,若超过一页时,则从另一页的边界开始。 用.usect对同一段名重复定义,可以将连续存放在存储器的若干变
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 汇编 指令 讲解
限制150内