TMS320C6000 C/C++运行时环境笔记
来源:互联网 发布:探究小车速度实验数据 编辑:程序博客网 时间:2024/05/16 17:04
一.存储器模型
C6000编译器把整个存储区当作单个线性存储块,并将其分配为代码区和数据区,一个C程序产生的代码和数据被放在各自连续的存储空间中,编译器假定存储器的32位地址空间都是可用的,但需要注意的是,连接器才是最终决定存储器映像(定义存储器映像并将代码和数据分配到目标存储器的是连接器,)编译器不对可用的存储器作任何假设,也不关心哪个地址不能被代码或者数据占用,以用哪些地址是保留给I/O设备或控制寄存器。
1.段:
编译器生成的可重定位的代码块和数据块称为段,系统设置不同,段分配到存储器的方式也不同,c6000编译器产生如下几个段:
已初始化段,包含数据和执行代码
(1).cinit段:包含变量初始值和常量值.
(2).const段:包括字符串文字,浮点常量和在程序中被声明为const的数据(如果常量没有同时被声明为volatile
(3).switch段:包含switch语句的跳转表
(4).text段:默认的包含所有的可执行的代码
未初始化段:存储器中的保留空间,程序在运行时用它来创建和存储变量。C/C++编译器生成的未初始化段:
(1).bss: 为全局变量和静态变量保留,如果为连接器设置了-c选项,则在程序开始时,C引导程序(c_int00)会将.cinit段的数据复制到bss段中,编译器会定义全局符号$bss,并指定其为.bss段的起始地址.
(2).far段:为声明为far的全局变量和静态变量保留
(3).stack段:系统栈,这个存储区用于传递参数和为局部变量分配存储空间.
(4).system段:为动态存储空间分配保留的存储区,提请动态空间分配要求的函数有:malloc calloc,和realloc等等,如果程序中没有用这些函数,编译器不生成此段
待续
- TMS320C6000 C/C++运行时环境笔记
- 判断C运行时环境的程序
- [Linux]C程序运行时环境
- DSP TMS320C6000学习笔记
- 运行时环境笔记
- Ubuntu 编译运行C笔记
- VC环境下的C运行时库设置
- C Runtime C运行时
- 求C语言运行环境下载
- Windows下搭建Objective-C运行环境
- ProtocolBuffer for Objective-C 运行环境配置
- ProtocolBuffer for Objective-C 运行环境配置
- Sublime text2 配置C/C++运行环境
- ProtocolBuffer for Objective-C 运行环境配置
- ProtocolBuffer for Objective-C 运行环境配置
- ProtocolBuffer for Objective-C 运行环境配置
- notePad++配置C/C++编译运行环境
- ProtocolBuffer for Objective-C 运行环境配置
- 【西欧经济史第二版】【4】第一章 导言
- Objective-C入门解读与内存管理方式
- gpio 的配置
- STL_Algorithm1: Fill, Fill_n, Generate, Generate_n
- 郁闷!!!!
- TMS320C6000 C/C++运行时环境笔记
- GVIM/VIM使用体验
- C ++
- 求助
- 成员函数指针与高性能的C++委托(上篇)
- 10 12 23 就一个人
- ArcGIS Desktop 10新特性(七)
- STL_Algorithm2: equal, mismatch, lexicographical_compare
- 使用原子操作同步队列