C6000 DSP汇编优化器伪指令详解及中断处理
需积分: 50 161 浏览量
更新于2024-08-24
收藏 673KB PPT 举报
"这篇文档主要介绍了C6000系列DSP程序结构中汇编优化器使用的伪指令,以及中断向量表的配置。涉及到的知识点包括汇编语言的伪指令、存储器映射、C编译器的工作原理、内存段的分配以及中断处理机制。"
在C6000系列DSP的编程中,汇编优化器使用一系列伪指令来提升程序性能。这些伪指令包括:
1. `.call [ret_reg=] func_name(arg1, arg2)`:用于调用函数,它只在当前过程内部有效,可以指定返回寄存器和参数。
2. `.cproc` 和 `.endproc`:这对伪指令定义了一个可调用的C/C++过程的开始和结束,它们必须成对出现,并可以指定变量。
3. `.mdep` 和 `.no_mdep`:这两个指令用于指示存储器是否有相关性,`.mdep` 用于标记存储器依赖,`.no_mdep` 表示无依赖,它们都在过程内部使用。
4. `.mptr{register|symbol},base[+offset][,stride]`:这个指令避免存储体冲突,主要用于过程内部,可以使用寄存器或符号,并指定基地址、偏移和步进。
5. `.reserve [register 1[, register 2,…]]`:该指令保留指定的寄存器,防止汇编优化器使用它们。
6. `.return [argument]`:仅在`.cproc`过程内有效,用于指定过程的返回值。
7. `.proc` 和 `.endproc`:定义过程的开始和结束,可以指定有效的寄存器参数,但不接受变量。
中断向量表(如Vectors.asm)是系统响应中断时跳转的起点,例如在“RESET”中断时跳转到“C_int00”。用户可以根据需求自定义中断向量表,或者利用DSP/BIOS生成。
C6000的存储器映射和C编译器工作时,代码段通常命名为`.text`,全局变量和静态变量位于`.bss`段,而局部变量可能分配在寄存器或`.stack`段。`.stack`和`.sysmem`段分别用于堆栈和动态分配的内存,如果未使用动态内存分配函数,`.sysmem`段将不会生成。
在C6000 DSP环境下,编程者需要注意C编译器如何理解并处理代码,尤其是在内存模式选项的设置、中断使能寄存器的配置等方面。中断处理中,如需启用NMI中断,需设置中断使能寄存器IER,并通过函数如`INTR_ENABLE(CPU_INT_NMI);`来启用。
理解和掌握这些知识点对于高效、正确地编写C6000系列DSP程序至关重要。
2012-04-01 上传
322 浏览量
点击了解资源详情
2022-09-24 上传
2022-09-15 上传
2010-10-02 上传
2022-09-24 上传
2011-06-24 上传
劳劳拉
- 粉丝: 20
- 资源: 2万+
最新资源
- NIST REFPROP问题反馈与解决方案存储库
- 掌握LeetCode习题的系统开源答案
- ctop:实现汉字按首字母拼音分类排序的PHP工具
- 微信小程序课程学习——投资融资类产品说明
- Matlab犯罪模拟器开发:探索《当蛮力失败》犯罪惩罚模型
- Java网上招聘系统实战项目源码及部署教程
- OneSky APIPHP5库:PHP5.1及以上版本的API集成
- 实时监控MySQL导入进度的bash脚本技巧
- 使用MATLAB开发交流电压脉冲生成控制系统
- ESP32安全OTA更新:原生API与WebSocket加密传输
- Sonic-Sharp: 基于《刺猬索尼克》的开源C#游戏引擎
- Java文章发布系统源码及部署教程
- CQUPT Python课程代码资源完整分享
- 易语言实现获取目录尺寸的Scripting.FileSystemObject对象方法
- Excel宾果卡生成器:自定义和打印多张卡片
- 使用HALCON实现图像二维码自动读取与解码