DSP芯片CMD文件中各段的实验验证(下)
来源:互联网 发布:算法研究员是做什么 编辑:程序博客网 时间:2024/05/16 00:49
接上文。
4、验证.const段和.econst段(因为两个段基本上是一样的,所以只验证.econst一个段。)
.const 显式初始化的全局和静态的const变量和字符串常量 不超过64K长度
.econst长调用的常量 数据中的任何地方
定义字符串常量数组str[]、全局const变量c、局部static const变量c_static_local。
指针p和字符变量ccc是实验辅助变量。
编译并查看map文件及仿真窗口,如下:
分析:
可以看到辅助变量p和ccc都是放在.stack上的。
字符串”string”,全局const变量c和局部static const变量c_static_local都是放在.econst上的。
即.econst上的大小为 7 + 2 = 9。
结论:const定义的全局变量、static const 局部变量、字符串常量都是存放在.econst或.const段上的。
注意:const定义的变量必须初始化。
5、验证.pinit (这个测试是在另外一个工程文件中测试的)
.pinit:全局构造器(C++)程序列表
在main文件中编写如下测试程序:注意是全局构造器程序列表,所以要定义一个全局对象才行。
编译并查看map文件,如下:可以看到确实生成了.pinit段,段上有数据。
6、验证.switch
.switch switch语句产生的表
在main文件中编写如下测试程序:
编译并查看map文件,如下:可以看到确实生成了.switch段,段上有数据,而且.switch段是属于初始化段。
注意:Jump tables for large switch statements。如果switch表很小的话,在map文件中是不会生成switch段的。
经过我实际测试发现,小于12个case时map文件不会生成switch段。
7、验证.sysmem段和.esysmem段(因为两个段基本上是一样的,所以只验证.esysmem一个段。)
.sysmem malloc函数产生的内存 不超过64K长度
.esysmem far_malloc函数产生的内存 数据中的任何地方
在main文件中编写如下测试程序:
编译并查看map文件,如下:可以看到确实生成了.esyemem段。但是malloc出来的内存空间是属于动态存储区,
所以在map文件无法体现出大小及数据,需要运行程序才能看到结果。
编译运行程序如下:
可以看到0x008c00是.esysmem段的起始地址,第一个存储单元的4代表有4个存储数据,第2个数据是0,由系统预留的。
第3到第5个数据都是0061,而’a’的ASCII码正好是0x0061=97。即第3到第5个数据都是’a’。
- DSP芯片CMD文件中各段的实验验证(下)
- DSP芯片CMD文件中各段的实验验证(上)
- TI DSP CMD 文件各段含义
- DSP中CMD文件
- dsp 的 cmd文件
- CMD文件的原理 dsp cmd dsp cmd文件
- DSP CMD文件的编写
- DSP的CMD文件讲解
- DSP CMD文件的编写
- TI DSP的CMD文件
- dsp的CMD文件详解
- DSP的cmd文件浅谈
- DSP的CMD文件讲解
- TI DSP的CMD文件
- DSP的CMD文件解读
- TI DSP处理器中CMD 文件的那些事儿
- DSP的cmd文件的写法
- TI DSP .CMD 文件的编写
- 一个angular4.0响应式表单应用~~~
- UVALive 7509 三分
- 静态顺序表的C语言实现
- C++传引用
- 实用函数之计算某天是星期几
- DSP芯片CMD文件中各段的实验验证(下)
- Spring整合ActiveMQ
- postgres定位执行慢的SQL的方法
- C#221课的主要内容
- Max Sequence
- 微信公众平台java接入
- java异常拓展
- ubuntu上安装及破解sublime,以及禁止更新
- 小学生算术