C6000 DSP汇编优化器伪指令详解及中断处理
需积分: 50 111 浏览量
更新于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-15 上传
2024-11-07 上传
2024-11-07 上传
2024-03-12 上传
2023-12-02 上传
2024-11-07 上传
2024-03-18 上传
劳劳拉
- 粉丝: 21
- 资源: 2万+
最新资源
- playgroundPlayaround:用CodeSandbox创建
- 通讯录(二级列表)(iOS源代码)
- 薇晓朵橙蓝地方门户 Discuz模板 v1.3 GBKUTF8版.zip
- rootkit:用于恶意软件分析培训的简单而有效的 rootkit
- recyclerview-master_android_
- coop-per-pro
- 游戏网站源码,可作为游戏公司网站或游戏信息网站等
- grailsQueryForProjections.rar_Java编程_Java_
- 7第七章分油机自动控制系统共14页.pdf.zip
- 无人自动驾驶-PID控制算法详解.zip
- LiquidBallProgressBar:Android液体球
- Python库 | taurenmd-0.8.1.tar.gz
- 3d-paper-terrain-model:3D 地形纸模型
- xsrfutil:用于防止AppEngine上CSRF攻击的简单库
- 知识类网站源码,可做知识付费或信息类网站
- 3d-image-Fourier.zip_图形图像处理_matlab_