- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.C6000 C 运行时环境1
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
您可能关注的文档
- 第6章 水肿(病理学基础教学课件).ppt
- 第6章 锁存器和触发器.ppt
- 第3章习题答案.doc
- 第6章图与网络分析.ppt
- 第6节《电势差与电场强度的关系》精品课件【新课标人教版A】.ppt
- 第6章阵列处理机.ppt
- 第一单元练习.doc
- 第一、第二定律习题课.ppt
- 第7章 图(数据结构(C语言版)).ppt
- 第三章 VB算法的三种模式.ppt
- 2024四川发展数字金沙科技有限公司招聘2人笔试参考题库附带答案详解.pdf
- 2025年青海省玉树州玉树县高三下学期考前数学适应性演练(二)试题.docx
- 2025年青海省玉树州玉树县高三下学期数学基础题、中档题型强化训练.docx
- 《玉簪记》现代戏曲改编研究.docx
- 2025年青海省玉树州治多县高三英才班下学期数学限时训练试题.docx
- 2025年青海省玉树州玉树县高三一模数学试卷及答案.docx
- 二年级数学下册《混合运算》教学反思 .pdf
- 2024年度重庆市继续教育公需科目应知应会考试题库及答案 .pdf
- 2025年青海省黄南州同仁县高三二模数学试卷及答案.docx
- 2025年青海省黄南州同仁县高三下学期数学基础题、中档题型强化训练.docx
最近下载
- 2024年广东省初中学业水平考试模拟地理试卷(一)课件.pptx VIP
- 广州洪德巷历史文化街区保护利用规划.pdf
- 广州市人民南历史文化街区保护利用规划(文本+图纸).pdf VIP
- 关于烹饪的策划书3.pptx
- WALL·E《机器人总动员(2008)》完整中英文对照剧本.pdf VIP
- LDT 99.13-2008 建设工程劳动定额市政工程-维修养护工程.docx
- 实验报告之spss频数分析.docx VIP
- 新教科版科学小学科学五年级下册全册教案(表格式,可打印).docx
- 2022年新改版教科版五年级上册科学全册教案教学设计(新整理版).doc
- 某小区高楼变频恒压供水系统设计.docx
文档评论(0)