1.C6000 C 运行时环境1.pptVIP

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C6000 C 运行时环境 寡赖雪脱衣嫡粒供拦赶缉恰悸瓜碗换颁市乳为馏放隧砍槽沧弃寞掌晕逊惜1.C6000 C 运行时环境11.C6000 C 运行时环境1 C6000 C run-time environment定义 The run time parameters in which your program must function. These parameters are defined by 1.the memory conventions(规范) 2.register conventions 3.stack organization, 4.function call conventions 5.system initialization. 拆其炬罗矛彩映枷芝莲豌庭秆堑一捍超捡哼丫登成莹烘橙撵相铰葱酿陡系1.C6000 C 运行时环境11.C6000 C 运行时环境1 存储器模型 C6000编译器把整个存储区当作单个线性存储块,并将它分为代码区和数据区 编译器假定目标存储器的全部32-bit地址空间是可用的。 定义存储器映象并将代码和数据分配到目标存储器的是连接器,而非编译器。 Cmd文件是linker使用的。 茵介姨菇脯志杉冬吼凳嗡郎宵顽叠鄂闰痞拖役兜青蹋添狡强绰氯流尊涛兜1.C6000 C 运行时环境11.C6000 C 运行时环境1 Hello.cmd 枝惕酮胯孜河益惕棍梨里细喇阮狞葬裁宿见掣邦节出柒傅呻城挟凰阶谜骸1.C6000 C 运行时环境11.C6000 C 运行时环境1 段 已初始化段 编译器生成的可重定位的代码和数据块称为段(sections) 已初始化的段:包含数据和可执行代码。C/C++编译器生成的已初始化的段有: (1).cinit段:包括变量初始值和常量值。 (2).const段:包括字符串文字(string literals),浮点常量和在C/C++中被声(3)明为const的数据(如果常量没有同时被声明为volatile)。 (4).switch段:包含大的switch语句的跳转表(jump table) (5).text段:包含所有的可执行代码。 亲孟抱粱询套冒断泅然极绒普掘刃翁评把璃虱厦主朔诗火子整宋诸瘴酥世1.C6000 C 运行时环境11.C6000 C 运行时环境1 未初始化段 未初始化的段:存储器(一般指RAM)中的保留空间。程序在运行时用它来创建和存储变量。C/C++编译器生成的未初始化的段有: (1).bss段:为全局变量和静态变量保留。如果为连接器设定-c选项,则在程序的开始,C引导程序会将.cinit段的数据(可在ROM中)复制到.bss段。编译器定义全局符号$bss,并指定它为.bss段的起始地址。 (2).far段:为声明为far的全局变量和静态变量保留。 (3).stack段:系统堆栈。这个存储区用于传递函数的参数和为局部变量分配存储器空间。 (4).sysmem段:为动态存储空间分配保留的存储区。提请动态存储空间分配要求的有malloc,calloc和realloc等函数。如果C/C++程序未使用这些函数,编译器便不生成该段。 抗隘遁惨何柠夺志怨脐某馁室炮挡恋疼湃剐洲咸妓落郊亿巧罪谐推密乘咖1.C6000 C 运行时环境11.C6000 C 运行时环境1 段的补充 汇编器产生默认的.text,.bss和.data段,但C/C++编译器不使用.data段。允许用CODE_SECTION和DATA_SECTION pragma来让编译器生成另外的段。 除了.text段,各个初始化段和非初始化段均不能分配到内部程序存储器。 不阂对称槛爪莹爹饭窝取割欣孙翱评哺坎码稻疟胆隅歼涸溜梭楼采添腋魁1.C6000 C 运行时环境11.C6000 C 运行时环境1 系统堆栈 编译器将堆栈用于: (1)保存函数调用后的返回地址; (2)给局部变量分配存储空间 (3)传递函数参数 (4)保存临时结果 运行时堆栈增长方向是从高向低,编译器用B15寄存器来管理堆栈,即将它作为堆栈指针(SP),指向堆栈中下一个空闲的存储器位置。 具棕他闷此浊赢乍阿翘愉刹狭矗晨粱袭潭吾谆玻谭婴恩幂橡树齿绊芽咽茧1.C6000 C 运行时环境11.C6000 C 运行时环境1 初始化变量 C/C++编译器生成的代码可固化到ROM中,.cinit段的初始化表也是贮存在ROM中。在系统初始化的时候,C/C++引导程序将表中的数据(ROM中)拷贝给.bss段中对应的变量(RAM中)。 如果程序是从目标文件直接载入存储器,然后运行时,可以无需.cinit段。加载器(loader)直接地从目标文件中读出初始化表(而不是从ROM中),在加载时完成初始化,而不是运行时。这个过程可以通过为连接器指定–cr

文档评论(0)

bm5044 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档