- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
10.6 ARM编译器中的预定义宏 ARM编译器预定义了一些宏,有些预定义宏对应一定的数值,有些预定义宏没有对应的数值。表10.7列出了这些预定义宏及其有效的场合。 参见教材P337 * 10.7 ARM中的C/C++库 本节介绍ARM C/C++运行时库,这些库为运行C/C++应用程序提供了各种支持。本节主要包括下面4部分内容: ARM中C/C++库的基本概念。 建立一个使用C/C++库的C/C++应用程序。 建立一个不使用C/C++库的C/C++应用程序。 裁减C/C++运行时库,以适应特定的目标运行环境。 * 10.7.1 ARM中的C/C++运行时库概述 1.??ARM中的C/C++运行时库类型 2.??ARM中C/C++库的存放位置 3.??ARM C/C++库的可重入性 4. 使用ARM C/C++库时应注意的事项 * 10.7.2 建立一个包含C/C++运行时库的C/C++应用程序 C/C++应用程序可以使用C/C++运行时库中的函数,这时,C运行时库将会完成下面的功能。 建立C/C++应用程序运行环境,这包括: 建立数据栈。 如果需要,建立数据堆。 初始化需要使用的C/C++运行时库。 运行程序main()。 提供对ISO C标准规定的函数的支持。 捕捉C/C++应用程序运行时产生的错误信息,并根据具体的实施规则进行相应的处理。 C/C++应用程序使用C/C++运行时库的方式有下面几种,本小节介绍前两种,10.7.3小节介绍第3种。 (1) 在semihost环境下使用C/C++运行时库。 (2) 在没有主机支持的环境下,如应用程序位于目标系统的ROM中,使用C/C++运行时库。 (3) C/C++应用程序不使用main(),也不初始化C/C++运行时库。 * 10.7.2 建立一个包含C/C++运行时库的C/C++应用程序 1. 在semihost环境下使用C/C++运行时库 2. 在nonsemihosted环境下使用C/C++运行时库 * 10.7.3 建立不包含C运行时库的应用程序 当应用程序中包含了函数main()时,将会引起对C运行时库的初始化。如果应用程序中不包含函数main(),将不会引起对C运行时库的初始化。这时,C运行时库的很多功能在应用程序中是不能使用的。本小节将这种不使用C运行时库的C/C++应用程序称为裸机C程序。裸机C程序不能使用下面的功能: 软件的数据栈溢出检查。 低级标准输入/输出stdio。 signal.h中定义的函数signal()及raise()。 atexit()。 alloca()。 * 10.7.3 建立不包含C运行时库的应用程序 1.??C运行时库中的一些支持函数的使用 2. 裸机C程序 重新实现-__rt_raise(),该函数被程序中的错误处理代码使用。 不要定义函数main()。 在编译选项中不要使用软件的数据栈溢出检查选项。 编写一个汇编指令的代码段(veneer),设置相关的寄存器,为运行C程序做好必要的准备。 保证自己编写的用于初始化的代码段得到运行。比如,可以将其放置到复位异常中断的中断处理程序中。 编译程序时,使用编译选项-fpu none。 3. 支持浮点操作的裸机C程序 4. 使用C运行时库中的函数 * 10.7.4 裁减C/C++运行时库以适应特定的目标运行环境 1.??C/C++应用程序初始化C/C++运行时库的过程 将非固定(Nonroot)的执行代码域(Region)从装载地址空间复制到运行地址空间。 将ZI域置零。 跳转到__rt_entry()运行。 2.??C/C++应用程序的退出过程 应用程序可以在正常运行结束后从main()函数中退出,也可以因为错误原因在程序运行中退出。 * 10.1 ARM C/C++编译器概述 本节介绍编译ARM程序时的一些基本概念。ARM编译器的具体使用方法将在10.2节介绍。 * 10.1.1 ARM C/C++编译器及语言库介绍 ARM集成开发环境中包含的C/C++编译器如表10.1中所示。 * 编译器名称 编译器种类 源文件类型 源文件后缀 输出的目标文件类型 armcc C C .C 32位ARM代码 tcc C C .C 16位Thumb代码 armcpp C++ C/C++ .C/.CPP 32位ARM代码 tcpp C++ C/C++ .C/.CPP 16位Thumb代码 10.1.1 ARM C/C++编译器及语言库介绍 ARM集成开发环境中C/C++语言的库包括下面几种: ARM C语言库 Rogue Wave C++库 支持库 ARM中C/C++语言库是以二进制的形式提供的。对应于不同的ATPCS格式,有相应格式的C/C++语言库,这是通过不同的编译器
您可能关注的文档
- 7、布展接待管理——宋启光说课.ppt
- 2016年上半年度工作总结及下半年度计划说课.ppt
- 2016年深圳市临床检验实验室管理质量评估-质量控制指标-培训说课.ppt
- ANSYS在高电压绝缘技术中的应用说课.ppt
- 7、点和线说课.ppt
- 第四章、互换金融工程概述.ppt
- 7、宴请礼仪说课.ppt
- 7、走进丽江说课.ppt
- 第四章、鱼类的人工繁殖概述.ppt
- 第四章.经营预测概述.ppt
- 多点监督与特征融合校准:目标检测算法的创新与突破.docx
- 南宁市门诊HIV_AIDS患者抑郁状况剖析与影响因素探究.docx
- 医疗过失犯罪中客观归责理论的精准适用与深度解析.docx
- 南宁市低碳经济发展研究.docx
- 清解瘀毒胶囊对脑出血大鼠血红蛋白毒性作用及机制探究.docx
- 内蒙古赤峰市元宝山区农村小学教师培训:现状、问题与突破路径.docx
- 泉州开发区国有资产投资经营有限公司发展战略研究:基于区域经济与市场环境的分析.docx
- 能源利用效率与经济增长方式的深度耦合及中国战略抉择.docx
- 分布式信号波达方向 - 时延联合估计算法的深度剖析与创新探索.docx
- 新媒体环境下大学校园精神传播的创新变革.docx
最近下载
- 部编版五年级上册《道德与法治》全册教案(含教学进度表).docx
- 体育文化概论..ppt VIP
- 架桥机安装、拆卸专项施工方案(30m).doc VIP
- 《体育概论》第七章体育文化.pdf VIP
- 大疆 DJI Mavic 3 行业系列 - 用户手册 v1.9.pdf
- 压力管道安全管理人员培训.pptx VIP
- 1.《大青树下的小学》课件(共20张PPT).pptx VIP
- 学堂在线 中医与诊断-学做自己的医生 章节测试答案.docx VIP
- (正式版)H-Y-T 215-2017 近岸海域海洋生物多样性评价技术指南(正式版).docx VIP
- 2025年医学课件-常见继发性高血压诊治.pptx
文档评论(0)