嵌入式系统及应用-Chapter09-ARM编译器_第1页
嵌入式系统及应用-Chapter09-ARM编译器_第2页
嵌入式系统及应用-Chapter09-ARM编译器_第3页
嵌入式系统及应用-Chapter09-ARM编译器_第4页
嵌入式系统及应用-Chapter09-ARM编译器_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统及应用1第九章

ARMC/C++编译器C/C++编译器概述编译器命令行格式pragmas和特定关键字数据类型和预定义宏C/C++库2C/C++编译器概述编译器和语言库搜索路径3编译器和语言库编译器名称编译器种类源文件类型源文件后缀目标文件类型armccCC*.C32位ARM代码tccCC*.C16位Thumb代码armcppC++C/C++*.C/*.CPP32位ARM代码tcppC++C/C++*.C/*.CPP16位Thumb代码4编译器和语言库文件类型*.c:C编译器源文件*.c,*.cp,*.cpp,*.c++,*.cc:C++编译器源文件*.h:头文件*.s:ARM汇编代码源文件*.o:ELF格式目标文件(含DRAWF2调试信息)*.lst:错误和告警信息列表文件5编译器和语言库ARMC语言库RogueWaveC++库支持库对于不同ATPCS有相对应的语言库支持6搜索路径内存中的ANSIC语言库的头文件系统当前路径(BerkeleyUnix规则)ARMINC环境变量指定搜索路径7编译器命令行格式过程调用标准源程序语言类型搜索路径输出文件类型目标处理器和ARM体系版本调试信息和代码生成控制告警和错误信息控制8编译器命令行格式compiler[PCS-options][source-language][search-paths][preprocessor-options][output-format][target-options][debug-options][code-generation-option][warning-options][additional-checks][error-options][source]armcc-viapar

source.c-errorserrorfile9过程调用标准-apcs/noswst/nointer/noropi/norwpi-fpu

softvfp与interwork相关的qualifiers-interwork/-nointerwork与位置无关特性相关的qualifiers-ropi/-noropi-rwpi/-norwpi与数据栈检查相关的qualifiers-swstackcheck/-noswstackcheck10源程序语言类型-ansi-ansic-cpp-embeddedcplusplus-strict11搜索路径-I-fk-fd-j12输出文件类型-c-list-ofile-S13目标处理器和ARM体系版本-cpuname-cpuARM940T-cpu4T-fpuname-fpunone-fpu

vfp-fpu

softfpa14调试信息和代码生成控制调试信息控制-g[option]-dwarf2代码生成控制代码优化编译选项代码段、数据段的编译选项内存模式编译选项对齐模式编译选项15告警信息和错误信息控制告警信息控制-W[options]+[options]一般情况下应更改程序而不是关闭告警信息错误信息控制-E[options]+[options]一般情况下应更改程序而不是关闭错误信息16pragmas和关键字pragmas声明函数的关键字声明变量的关键字限定数据类型的关键字17pragma格式check_printf_format,check_scanf_format,debug,Ospace,Otime,Onum,stack_check,softfp_linkage,import-pragmafeature-name设置特性-pragma

no_feature-name取消特性举例

#pragma

check_printf_formats

externvoidmyprintf(constchar*,...)

#pragma

no_check_printf_formats18声明函数的关键字__asm__inline__irq__pure__softfp__swi__swi_indirect__value_in_regs__weak19声明变量的关键字register_int64_global_reg20声明变量的关键字_align(8)_packed_volatile_weak21数据类型和预定义宏基本数据类型预定义宏22基本数据类型数据类型长度(位)对其特性char81字节对齐short162半字对齐int324字节对齐long324字节对齐longlong644字节对齐float324字节对齐double644字节对齐longdouble644字节对齐allpointer324字节对齐bool324字节对齐23预定义宏见P321编程

#ifdef

MACRO_NAME

...

#else

...

#endif24C/C++库C/C++运行时库概述建立包含运行时库的应用程序建立不包含运行时库的应用程序裁减C/C++运行时库25C/C++运行时库概述C运行时库ISOC语言库标准中定义的函数运行于semihosting、与目标系统相关的函数C/C++编译器需要的支持函数C++运行时库RogueWave标准C++库C++编译器的支持函数其它C++库26C/C++运行时库概述运行时库选择内存模式:bigendianorlittel

endian浮点运算类型数据栈溢出检查代码位置无关特性存放位置intall\lib\armlibintall\lib\cpplib27C/C++运行时库概述可重入性使用位置相关寻址方式的静态数据的函数是不可重入的使用位置无关寻址方式的静态数据的函数是可重入的重入规则28C/C++运行时库概述注意事项C运行时库以二进制提供编译自己的C运行时库重新实现部分函数实现C运行时库移植C++运行时库不是免费的29建立包含运行时库的应用程序建立C/C++应用程序运行环境建立数据栈建立数据堆初始化运行时库运行main()函数提供堆ISOC标准规定的函数捕捉运行时错误信息30建立包含运行时库的应用程序在semihost环境下使用C/C++运行时库在无主机支持环境下使用C/C++运行时库不使用main()函数和不初始化运行时库环境下使用运行库环境31semihosted下使用运行时库ARM使用SWI软件中断方式提供支持使用ARM标准semihostingSWI建立自己的semihostingSWI中断处理函数semihosting函数是可以被重新实现的32semihosted下使用运行时库ARM工具对semihosting的支持ARMulator提供semihostingSWI支持Angel调试监视器提供semihostingSWI支持Multi-ICE/EmbeddedICE提供semihostingSWI支持33semihosted下使用运行时库去除semihosting支持删除semihosting函数调用重新实现semihosting函数实现SWI中断处理程序34nonsemihosted下使用运行时库在无semihosting支持环境下不能调用包含semihosting功能的函数在无semihosting支持环境下使用运行时库建立与目标环境相关的函数实现不实用semihosting功能将新的目标文件与应用程序连接更新配置建立适应目标环境的应用系统35nonsemihosted下使用运行时库重新实现semihosting功能函数和目标环境相关函数以提供给C运行时库使用表10.8列举了直接依赖semihosting功能的函数;表10.9列举了间接依赖semihosting功能的函数;36建立不包含运行时库的应用程序若不包含main()函数则不会对C运行时库进行初始化,称为裸机C程序:不支持数据栈检查不支持stdio不支持signal()和raise()不支持atexit()和alloca()重新实现__rt_raise()已便被错误处理代码使用编写汇编代码实现C程序运行环境初始化,并保证代码在C程序前运行37建立不包含运行时库的应用程序重新实现部分函数以使用C运行时库实现__rt_raise()获取除法、结构数据复制和浮点数算术运算支持显示调用set_local()获取与地域相关函数支持,比如atoi(),sprintf(),sscanf()实现_fp_init()获取浮点运算实现fputc()和ferror()实现低级输出支持,实现fgetc()和__backspace()实现低级输入支持;38裁减C/C++运行时库C/C++运行时库入口点:__main()将nonroot执行代码域复制到运行地址空间将

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论