dsp 第四章1

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
24Hale Waihona Puke Baidu
1.运行汇编程序 汇编器是名为asm500.exe的可执行程序 axm500 [input file[object file[listing file]]][-options] 例如 axm500 cjy.asm -l -s -x 源程序cjy.asm经汇编后将生成一个cjy. obj目标 文件、列表文件、符号表(在目标文件中)以及交 叉引用表(在列表文件中)。
16
3.汇编命令 ⑶ 调整SPC的指令 如.align等。 ⑷ 对输出列表文件格式化的命令
如.drlist、.drnolist等。
⑸ 引用其他文件的命令
如copy、.def、.global、.include、.mlib、 .ref等。
17
3.汇编命令 ⑹ 控制条件汇编的命令 如.break、.else、.elseif、.endif、.endloop、 .if、.loop等。
1
第四章 DSP软件开发过程
第一节 汇编语言程序的编写方法
第二节
第三节
汇编语言程序的汇编
COFF的一般概念
第四节
目标文件的链接
2
软件开发过程
3
2. ’C54x的开发工具
(1)代码生成工具:
C编译器:用来将C/C++语言源程序自动编译为 ’C54x的汇编语言源程序。 汇编器:用来将汇编语言源文件汇编成机器语 言COFF目标文件。 链接器:将汇编生成的、可重新定位的COFF目 标模块组合成一个可执行的COFF目标模块。 文档管理器:允许用户将一组文件(源文件或 目标文件)集中为一个文档文件库。
.global abc,def,ghi,adr ;定义全局符号 000000 000000 000001 000002 000003 add3 1000! 0000! 0000! 8000! abc,def,ghi,adr ;调用宏 LD abc,A ;宏展开 ADD def,A ADD ghi,A STL A,adr
15
3.汇编命令 ⑴ 对各种段进行定义的命令 如.bss、.data、.sect、.text、.usect等。 ⑵ 对常数(数据和存储器)进行初始化的命令 如.bes、.byte、.field、.float、.int、.log、 .space、.string、.pstring、.xfloat、.xlong、 .word等。
8
第一节
汇编语言程序的编写方法
汇编语言程序的编辑、汇编和链接过程
9
1.汇编语言源程序的句法格式 要点 格式
[标号][:] 空格 [助记符] 空格 [操作数] 空格 [;注释]
以.asm为扩展名 每一行由4个部分组成
[ ]中的 内容为可 选择部分
供本程序的其它部分或其它程序调 用。标号是任选项,标号后面可以 加也可以不加冒号“:”。 10
* * * *
例4-2 宏定义、宏调用和宏展开的一个例子。
add3
ADDRP=P1+P2+P3
;说明宏功能
add3
.macro p1,p2,p3,ADDRP ;定义宏 LD p1,A ADD p2,A ADD p3,A STL A,ADDRP .endm ;将参数1赋给A ;将参数2与A相加 ;将参数3与A相加 ;将结果A的低字存参数4 ;结束宏
⑺ 在汇编时定义符号的命令 如.asg、.endstruct、.equ、.eval、.label、 .set、.sruct等。
⑻ 执行其他功能的命令 如.algebraic、.emsg、.end、.mmregs、.mmsg、 .newblock、.sblock、.version、.vmsg等。
18
例4-1 编写计算y=a1*x1+a2*x2+a3*x3+a4*x4的汇编源程序 * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * example.asm y=a1*x1+a2*x2+a3*x3+a4*x4 * * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * .title ―example.asm‖ ;为汇编源程序取名 .mmregs ;定义存储器映象寄存器 STACK .usect ―STACK‖,10h ;分配10个单元的堆栈空间 .bss a,4 ;为系数a分配4个单元的空间 .bss x,4 ;为变量x分配4个单元的空间 .bss y,1 ;为结果y 分配1个单元的空间 .def _c_int00 ;定义标号_c_int00 .data .word ;定义数据代码段 ;在标号table开始的8个单元 ;为这8个单元赋初值
23
第二节
汇编语言程序的汇编
汇编命令 助记符指令 宏命令
汇编语言源程序要素
汇编程序(汇编器)功能
将源程序汇编成可重定位的目标文件(.obj文件); 如果需要,可以生成一个列表文件(.lst文件); 将程序代码分段,每段的目标代码都有一个SPC管理; 定义和引用全局符号,可在列表后附加交叉引用表; 对条件程序块进行汇编; 支持宏功能,允许定义宏命令。
宏定义的格式
macname .macro[parameter 1][,…,parameter n] 助记符指令与宏指令 [.mexit] .endm 宏调用的格式
[label][:]macname [parameter1][,…,parametern]
22
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 1 1 1 1
5
2. ’C54x的开发工具
(1)代码生成工具:
绝对制表程序:将链接后的目标文件作为输入, 生成.abs输出文件。 交叉引用制表程序:利用目标文件生成一个交
叉引用清单,列出链接的源文件中的符号以及它们的
定义和引用情况。
6
2. ’C54x的开发工具
(2)代码调试工具:
C/汇编语言源码调试器:与软件仿真器、评 价模块、软件开发系统、软件仿真器等配合使用。
4.宏定义和宏调用
宏指 令与 子程 序的 异同
(1)两者都可以被多次调用,但是把子程 序汇编成目标代码的过程只进行一次,而在 用到宏指令的每个地方都要对宏指令中的语 句逐条地进行汇编。 (2)在调用前,由于子程序不使用参数, 故子程序所需要的寄存器等都必须事先设置 好;而对于宏指令来说,由于可以使用参数, 调用时只要直接代入参数就行了。 (3)宏指令可以在源程序的任何位置上定 义,但必须在用到它之前先定义好。宏定义 21 可以嵌套。
14
3.汇编命令
汇编命令是用来为程序提供数据和控制汇编进程的。C54x汇 编器共有64条汇编命令,根据它们的功能,可以将汇编命令 分成8类: (1)对各种段进行定义的命令。 (2)对常数(数据和存储器)进行初始化的命令。 (3)调整SPC(段寄存器)的指令。 (4)对输出列表文件格式化的命令。 (5)引用其它文件的命令。 (6)控制条件汇编的命令。 (7)在汇编时定义符号的命令。 (8)执行其它功能的命令。
要点
可以是助记符指令、汇编指令、宏 指令和宏调用命令。 1.助记符指令,一般用大写; 2.汇编命令和宏命令,以句号“.‖ 开始,且为通常用小写。
12
建议
[标号][:] 空格 [助记符] 空格 [操作数] 空格 [;注释]
要点
1.指令中的操作数或汇 编命令中定义的内容 2.操作数之间必须用逗 号“,”分开。
软件仿真器:是一种模拟DSP芯片各种功能并
在非实时条件下进行软件调试的调试工具,它不需 目标硬件支持,只需在计算机上运行。 初学者工具DSK:是TI公司提供给初学者进行 DSP编程练习的一套廉价的实时软件调试工具。
7
2. ’C54x的开发工具
(2)代码调试工具:
可扩展的开发系统仿真器(XDS510):可用来 进行系统级的集成调试,是进行DSP芯片软硬件开发 的最佳工具。 评价模块EVM板:是一种低成本的开发板,可 进行DSP芯片评价、性能评估和有限的系统调试。
19
table: 中
1,2,3,4
.word 8,6,4,2
.text ;定义文本代码段 _c_int00 :STM #0,SWWSR ;软件等待状态寄存器置0,不设等待 STM #STACK+10h,SP ;设置堆栈指针初值 STM #a,AR1 ;AR1 指向 a的地址 RPT #7 ;从程序存储器向数据存储器 MVPD table,*AR1+;重复传送 8个数据 CALL SUM ;调用 SUM 实现乘法累加和的子程序 end: B end ;循环等待 SUM:STM #a,AR3 ;将系数a的地址赋给AR3 STM #x,AR4 ;将变量x的地址赋给AR3 RPTZ A,#3 ;将A清0,并重复执行下条指令4次 MAC *AR3+,*AR4+,A ;执行乘法并累加,结果放在A中 STL A,@y ;将A的低字内容送结果单元y RET ;结束子程序 .end ;结束全部程序 20
25
2.列表文件 列表文件中包括源程序语句和目标代码
TMS320C54x COFF Assembler Version 3.70 Tue Oct 19 12:42:59 2004 Copyright (c) 1996-2001 Texas Instruments Incorporated example.asm PAGE 1 1 * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * 2 * example.asm y=a1*x1+a2*x2+a3*x3+a4*x4 * 3 * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * 5 .mmregs ;定义存储器映象寄存器 6 000000 STACK .usect "STACK",10h ;分配10个单元的堆栈空间 7 000000 .bss a,4 ;为系数a分配4个单元的空间 8 000004 .bss x,4 ;为变量x分配4个单元的空间 9 000008 .bss y,1 ;为结果y 分配1个单元的空间 10 .global _c_int00 ;定义标号
第四章 DSP软件开发过程
内容提要 可编程DSP芯片开发需要一套完整的软、硬件开发工具。 通常可分成代码生成工具和代码调试工具两大类。 代码生成工具是指将高级语言或汇编语言编写的DSP程序 转换成可执行的DSP芯片目标代码的工具程序,主要包括汇 编器、链接器和C编译器以及一些辅助工具程序等。 代码调试工具包括C/汇编语言源码调试器、仿真器等。 本章主要介绍代码生成工具,包括’C54x软件开发流程、 汇编语言程序的编写、编辑、汇编和链接过程、COFF段的 一般概念、汇编器和链接器处理段的方法以及程序的重定位 等。
要点
1.从分号“;”开始 2.可以放在指令或汇编命令后面, 也可以放在单独的一行或数行。
13
2.汇编语言源程序的数据型式
二进制:如1110001b或1111001B; 八进制:226q或572Q; 十进制:1234或+1234或-1234(缺省型) 十六进制:0A40h或0A40H或0xA40 浮点数:1.623e-23(仅C语言程序中能用,汇编程序不能用) 字符:‘D’ 字符串:“this is a string‖
4
2. ’C54x的开发工具
(1)代码生成工具:
助记符指令—代数式指令翻译器:用来将包含 助记符指令的汇编语言源文件转换成包含代数式指令 的汇编语言源文件。 建库实用程序:用来建立用户自己使用的、并 用C/C++语言编写的支持运行的库函数。 十六进制转换程序:可以很方便地将COFF目标 文件转换成TI、Intel、Motorola等公司的目标文件 格式。
要 点
1.标号必须从第1列写起, 2.标号最多可达32个字符,可以是A~Z,a~z,0~9, _,以及$,但标号的第1个字符不能是数字。 3.引用标号时,标号的大小写必须一致。 4.标号的值就是段程序计数器SPC的值。 5.如果不用标号,则第一个字母必须为空格、分号 或星号(*)。
11
[标号][:] 空格 [助记符] 空格 [操作数] 空格 [;注释]
相关文档
最新文档