ARM体系结构与编程(第2版)第10章说课.ppt

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话: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++语言库,这是通过不同的编译器

文档评论(0)

4477769 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档