当前位置:首页 » 编程软件 » dsp反编译

dsp反编译

发布时间: 2022-02-04 07:41:18

1. dsp要用到汇编语言吗

肯定要汇编,你不用怕,汇编用得很少,你最好学学汇编,至少要看得懂(不难),绝大多数情况都是把汇编COPY过来用,c语言编程占据99%,剩下1%的汇编你搞不定,整个程序你就OVER了。

2. 如何学习好DSP

关于DSP和普通51 AVR还有STM32的区别
DSP是为运算而生的芯片,他最强大的地方就在与它的数**算性能,那是由它的指令集支持的。那些拿DSP和STM32比较的,省省吧,如果你两者都熟悉你就知道根本没啥好比的,如果我需要很多高级的接口,比如以太网和USB,那么我自然选STM32,如果我需要实现一些算法,那肯定会选DSP。如果你对运算速度不敏感,反正72M的速度已经比原先单片机快很多了,那当然是看你熟悉哪个,哪个价格比较好,支持比较好。

从51 AVR到DSP最大的障碍
1、应该是编译环境吧,TI的DSP都用的是CCS,CCS界面和原先IAR区别不是一般的大,比如程序导入,比如观察变量,比如烧写FLASH。恩,是的。用过了IAR那种傻瓜化的操作了之后,真是怎么弄怎么别扭,CCS真是太不友好了。但是没办法,IAR他们是专门做编译软件的,TI主要是做DSP的,TI也意识到这个问题了,所以现在推出的CCSV4好像在这方面有很大的加强。不过网上还是CCS3.3的资料最多,大家也熟悉,如果刚接触还是先用CCS3.3为好。
如果你手头有快开发板,那里面应该有对这些操作的详细说明。所以这个慢慢应该也可以熟悉。

2、库文件。TI的库文件都是联合+结构+位域的形式。对这些结构不是非常熟悉的话可能看着有点晕,这个只能慢慢去看C的书。最纳闷的可能就是它的地址映射,如何把寄存器映射到相应的地址,那是它由编译器来支持的主要通过#PROGRM来实现,可以去看看它的CMD文件

3、CMD,CMD文件可能是入门最大的一个坎了,单片机或者ARM根本就没这么一说,这破东西到底啥用呐?CMD文件主要作用就是用来做内存分配,你的芯片里面有FLASH有RAM有BOOT ROM,你编写的程序有代码,要烧到FLASH中,有全局变量要存到RAM的全局变量区域,有局部变量,要存到堆栈中。CDM文件其实就是把你代码中的这些一块一块的东西和具体的硬件存储对应起来。你可以随你需要任意来配置,比如我有一个数据表格,普通的单片机你定义好了之后会有编译器来帮你存放到一个地方,但是DSP里面你可以通过配置CMD把它放在你认为合适的地方。再比如堆栈空间的大小,以前从来没关心过堆栈大小,但是开辟的太大的话可能浪费内存空间。当然,每个芯片都有一个标准的CMD文件,初学者完全可以不用去修改它。

4、文档。TI的文档包括数据手册和外设指南,很多人说很乱,不像其它芯片,所有外设的资料都会放在一起,但是TI会每个外设弄一个。这就要说说TI的外设,它的外设都非常专业,是的专业。比如它的PWM外设,叫ePWM,也就是增强型的PWM,这个外设可以轻松输出非常复杂的PWM波形,而且不用CPU参与。所以它的外设指南有100多页,你会发现很多外设都是这样,里面有很多很多增强的功能,相对应的它的说明文档也就非常长。要是全部都集合在一起那就会非常的大。而且它的每个外设都是有独立版本的,比如ADC,已经从0版到3版,而ePWM还是1版,分开之后升级的维护会方便很多,很多外设在类似的芯片都是一样的。

用STM32的时候我从来没看懂过它的库,甚至都没仔细看过它的手册。但是最后也搞出来了,完了之后我对这块芯片没多少熟悉的感觉。但是用C2000系列的DSP的时候则要反反复复的去看外设指南,分析手册上给出的结构,让我对芯片非常熟悉,再加上它的编译环境是完全可以配置的,我甚至都知道我某个变量会在哪个地方。

3. 后缀名为.dsp的文件是什么

项目文件名后缀为dsp(保存项目设置),它维护应用程序中所有的源代码文件,以及Visual C++如何编译、连接应用程序,以便创建可执行程序。Visual C++6的集成开发环境中,通过"File"菜单的"New"命令创建一个新的项目。创建一个项目的同时,也创建了一个项目工作区,项目工作区文件的后缀名为dsw(保存项目工作区的设置)。一个应用程序可以有一个项目及若干个子项目,但只有一个活动的项目。

4. 如何将c语言程序转换成dsp的汇编语言

第一、自己转;看懂C之后自己来写汇编;第二、让机器转,编译连接机器之后,在执行时可以看到转换后的汇编代码,不过不是一一对应的。

5. dsp指令中 EALLOW,EDIS,ERTM都是什么意思

EALLOW,EDIS是成对使用的,有些寄存器是受到保护的,不能任意写,EALLOW相当于去掉保护,操作方法如下:

1、首先将电脑USB接口通过仿真器连接好DSP28335控制板,打开CCS6.0编译器,选择“View—>Target Configurations”选项。

6. 请教.dsw,.dsp文件是干什么的

VC 文件类型:

DSW:全称是Developer Studio Workspace,最高级别的配置文件,记录了整个工作空间的配置信息,她是一个纯文本的文件,在vc创建新项目的时候自动生成。

DSP:全称是Developer Studio Project,也是一个配置文件,不过她记录的是一个项目的所有配置信息,纯文本文件。

OPT:与DSW、DSP配合使用的配置文件,她记录了与机器硬件有关的信息,同一个项目在不同的机器上的opt文件内容是不同的。

CLW:记录了跟ClassWizard相关的信息,如果丢失了clw文件,那么在Class View面板里就没有类信息。

(6)dsp反编译扩展阅读:

自动生成文件:

以下文件在项目中是可丢弃的,有些文件删除后,VC会自动生成的。

ncb 无编译浏览文件(no compile browser)。当自动完成功能出问题时可以删除此文件。build后会自动生成。

opt 工程关于开发环境的参数文件。如工具条位置等信息;(可丢弃) 。

aps (AppStudio File),资源辅助文件,二进制格式,一般不用去管它。

plg 是编译信息文件,编译时的error和warning信息文件(实际上是一个html文件),一般用处不大.在Tools->Options里面有个选项可以控制这个文件的生成。

hpj (Help Project)是生成帮助文件的工程,用microsfot Help Compiler可以处理。

mdp (Microsoft DevStudio Project)是旧版本的项目文件,如果要打开此文件的话,会提示你是否转换成新的DSP格式。

7. DSP处理器 它的可执行文件是什么格式 跟coff文件是什么关系

TI的编译器,连接器等工具产生的目标文件格式为Common Object File Format(简称COFF)。COFF格式是AT&T开发的,在UNIX系统中所采用的目标文件格式。TI的编译器产生的obj文件以及连接之后产生的out文件都是COFF格式的。用CCS载入out文件到DSP的内存的时候,CCS会分析这个out文件,将其中储存的代码段和初始数据等段中的数据复制到DSP的内存中,并且设置程序指针到Entry Point(入口地址)。Hex5x, Hex6x等转换工具通过分析out文件,将其输出为一个boot table,方便各种自举(自启动)程序的编写。例如我们经常把这样的boot table写入flash, 制作成能从flash自举的应用程序。
COFF最开始是文件头和附加文件头,附加文件头中保存有Entry Point的地址。其后就是Section Header表,其中有各个section的物理地址、长度以及初始化数据的在文件中的偏移地址等信息。所有的section header结束之后就是数据区了。也就是需要复制到DSP 内存中去的数据。其后还有连接用的relocation信息,如果out文件的话不需要这些信息,relocation之后是符号表,例如C语言的全局变量,函数等符号都在这个表中储存。最后是字符串表,section的名称或者符号名称太长的时候就把这些名称字符串储存到字符串表中。

8. dsp文件 dsw文件 dat文件分别是什么

看这个帖,基本上VC++生成的什么扩展名的都有说明

参考:http://hi..com/pcrazyc/blog/item/8bd803165d23d64b20a4e942.html

.APS:存放二进制资源的中间文件,VC把当前资源文件转换成二进制格式,并存放在APS文件中,以加快资源装载速度。资源辅助文件。

.BMP:位图资源文件。

.BSC:浏览信息文件,由浏览信息维护工具(BSCMAKE)从原始浏览信息文件(.SBR)中生成,BSC文件可以用来在源代码编辑窗口中进行快速定位。用于浏览项目信息的,如果用source brower的话就必须有这个文件。可以在project options里去掉Generate Browse Info File,这样可以加快编译进度。

.C:用C语言编写的源代码文件。

.CLW:ClassWizard生成的用来存放类信息的文件。classwizard信息文件,ini文件的格式。

.CNT:用来定义帮助文件中“Contents”的结构。

.CPP或.CXX:用C++语言编写的源代码文件。

.CUR:光标资源文件。

.DEF:模块定义文件,供生成动态链接库时使用。

.DLG:定义对话框资源的独立文件。这种文件对于VC工程来说并非必需,因为VC一般把对话框资源放在.RC资源定义文件中。

.DSP:VC开发环境生成的工程文件,VC4及以前版本使用MAK文件来定义工程。项目文件,文本格式。

.DSW:VC开发环境生成的WorkSpace文件,用来把多个工程组织到一个WorkSpace中。工作区文件,与.dsp差不多。

.EXP:由LIB工具从DEF文件生成的输出文件,其中包含了函数和数据项目的输出信息,LINK工具将使用EXP文件来创建动态链接库。只有在编译DLL时才会生成,记录了DLL文件中的一些信息。

.H、.HPP或.HXX:用C/C++语言编写的头文件,通常用来定义数据类型,声明变量、函数、结构和类。

.HLP:Windows帮助文件。

.HM:在Help工程中,该文件定义了帮助文件与对话框、菜单或其它资源之间ID值的对应关系。

.HPJ:由Help Workshop生成的Help工程文件,用来控制Help文件的生成过程。

.HPG,生成帮助的文件的工程。

.ICO:图标资源文件。

.ILK:连接过程中生成的一种中间文件,只供LINK工具使用。

.INI:配置文件。

.LIB:库文件,LINK工具将使用它来连接各种输入库,以便最终生成EXE文件。

.LIC:用户许可证书文件,使用某些ActiveX控件时需要该文件。

.MAK:即MAKE文件,VC4及以前版本使用的工程文件,用来指定如何建立一个工程,VC6把MAK文件转换成DSP文件来处理。

.MAP:由LINK工具生成的一种文本文件,其中包含有被连接的程序的某些信息,例如程序中的组信息和公共符号信息等。执行文件的映像信息记录文件。

.MDP:旧版本的项目文件,相当于.dsp

.NCB:NCB是“No Compile Browser”的缩写,其中存放了供ClassView、WizardBar和Component Gallery使用的信息,由VC开发环境自动生成。无编译浏览文件。当自动完成功能出问题时可以删除此文件。编译工程后会自动生成。

.OBJ:由编译器或汇编工具生成的目标文件,是模块的二进制中间文件。

.ODL:用对象描述语言编写的源代码文件,VC用它来生成TLB文件。

.OLB:带有类型库资源的一种特殊的动态链接库,也叫对象库文件。

.OPT:VC开发环境自动生成的用来存放WorkSpace中各种选项的文件。工程关于开发环境的参数文件。如工具条位置信息等。

.PBI、.PBO和.PBT:由VC的性能分析工具PROFILE生成并使用的三种文件。

.PCH:预编译头文件,比较大,由编译器在建立工程时自动生成,其中存放有工程中已经编译的部分代码,在以后建立工程时不再重新编译这些代码,以便加快整个编译过程的速度。

.PDB:程序数据库文件,在建立工程时自动生成,其中存放程序的各种信息,用来加快调试过程的速度。记录了程序有关的一些数据和调试信息。

.PLG:编译信息文件,编译时的error和warning信息文件。

.RC:资源定义文件。

.RC2:资源定义文件,供一些特殊情况下使用。

.REG:注册表信息文件。

.RES:二进制资源文件,资源编译器编译资源定义文件后即生成RES文件。

.RTF:Rich Text Format(丰富文本格式)文档,可由Word或写字板来创建,常被用来生成Help文件。

.SBR:VC编译器为每个OBJ文件生成的原始浏览信息文件,浏览信息维护工具(BSCMAKE)将利用SBR文件来生成BSC文件。

.TLB:OLE库文件,其中存放了OLE自动化对象的数据类型、模块和接口定义,自动化服务器通过TLB文件就能了解自动化对象的使用方法。

.WAV:声音资源文件。

9. 对DSP而言,CCS用C语言编程和汇编编程,二者的效率相差多少

我用的是28XX系列的,不知道经验对你有没有用,因为不同系列的芯片多少有些差别。
TI提供的库已经相当可以了,兼顾易用与效率。我当时做过这样的测试
1. 用IQMATH实现
2. 直接C语言实现
3. C语言优化实现
4. 原生汇编实现
IQMATH的运行周期在1000左右,比方案3快几十个周期,比方案4慢几个周期,方案2是10000多个周期。
另外,因为只是单独测的算法,汇编之所以快是快在寄存器的使用上,操作数可以直接入寄存器,但是考虑到程序其他部分是用C语言编写的话,把操作栈的时间也加上,并不比方案1快。毕竟我对TI的汇编吃的也不透。
在编写上,无疑是方案1提供了最接近C语言风格的实现,几乎不用考虑ISA方面的问题。
另外对于执行效率,我觉得主要考虑三点:
1.分支的使用
CCS对C语言的优化我没做过太多比对。其实单从反汇编的结果看,我接触过的嵌入式开发环境的编译器都能做出很好的优化。但是几乎每个编译器都会在逻辑的优化上有欠缺——它只能对一些显而易见的判断条件进行优化,而在写程序的过程中,我们经常出于易读性的考虑,或者稳定性的考虑,或者其他的考虑加入几乎不会发生的分支,这样的分支判断会消耗一定比率的代码段执行效率,视乎代码段内有用功能的长度而定,越长这个比率越小,越短这个比率越高。
2.一般操作,就是各种赋值操作
在一般的操作上,编译器的优化已经很令人满意了,基本上可以作为编写汇编的范本。我觉得所谓效率能达到90%就是针对这个部分说的。
3.特殊操作,比如对整块内存的操作,或者是浮点运算上。
在一些特殊的操作上,就要看是否有现成的库,或者看硬件是否支持。比如对整块内存操作就别用循环一个字节一个字节的搬了。
以上三点都能考虑到的话,相信执行效率方面已经没有太大的提升空间了。

另外如果你的代码发生在初始化部分,也就是只在系统运行开始的时候运行一次,那么优化不优化其实没有太大的必要,除非你对系统初始化的时间有严格的要求。但是如果你的代码是作为任务要被反复运行的,那就有优化的必要了。

在CCS里有代码消耗时钟周期的统计,如果你觉得某段代码效率低下的话,可以先分段进行消耗时钟周期的计算,这样优化比较有针对性。

热点内容
ftp服务软件下载 发布:2025-01-07 06:53:42 浏览:310
领导专车配置物品怎么处理 发布:2025-01-07 06:49:50 浏览:444
ftp字符集 发布:2025-01-07 06:28:21 浏览:344
数据库返回值 发布:2025-01-07 06:17:26 浏览:376
弹簧自动压缩 发布:2025-01-07 06:08:35 浏览:523
传奇荣耀脚本 发布:2025-01-07 05:53:14 浏览:980
为什么安卓手机连接不了苹果耳机 发布:2025-01-07 05:37:49 浏览:76
c语言mfc 发布:2025-01-07 05:33:18 浏览:593
自己搭建邮件服务器ddns 发布:2025-01-07 05:19:29 浏览:206
光驱无法访问指定设备 发布:2025-01-07 05:17:19 浏览:105