⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 08 编译器设置.txt

📁 ads1.2学习资料,对arm初学者有帮助.
💻 TXT
字号:
编译器选项设置:有ARM C,ARM C++,Thumb C和Thumb C++四种编译器,这几种编译器设置方法相同,以ARM C为例介绍.

1. Target and Source选项卡设置:

	Architecture or Processor下拉列表框:用于选择目标系统中的ARM体系结构版本号或者处理器编号.

	Floating Point下拉列表:用于选择系统中浮点部件的体系结构,设置本选项后将使得特定CPU型号所含的浮点部件的体系结构失效.取值范围与前面汇编器介绍相同.

	Byte Order:使用big-endian内存模式还是little-endian内存模式.
	big-endian:地址为A的字单元包括字节单元A,A+1,A+2和A+3字节单元由高位到低位字节顺序为A,A+1,A+2,A+3.
	little-endian:地址为A的字单元包括字节单元A,A+1,A+2和A+3字节单元由高位到低位字节顺序为A+3,A+2,A+1,A.

	Source Language:确定源文件的类型,可能取值如下:

		ANSI/ISO Standard C:指定源程序满足比较严格的ANSI C标准,这时删除了一些语言特性,扩展了一些细小的功能.
		Strict ANSI/ISO Standard C:指定源程序满足严格的ANSI C标准.

	对于C++编译器来说还有下面三个选项:

		ISO/IEC Standard C++:基本满足ISO/IEC C++标准,扩展了一些细小的功能.
		Strict ISO/IEC Standard C++:严格满足ISO/IEC C++标准.
		Embedded C++:指定源程序满足工业C++标准,即Embedded C++标准. Embedded C++语言是标准C++语言的一个子集,它主要用于嵌入式应用环境,更注重代码执行效率.

2. ATPCS	(ARM and Thumb Procedure Call Standard)

		interworking 支持/禁用 C,ASM代码混合使用.
		Software stack check	软件数据栈检查.
		ropi,rwpi				基本同ASM部分	

3. Warnings (报警选项设置)

	No warnings				关闭所有报警
	Warn for all condition	打开所有报警

	C/C++:

		Assignment in condition	:	报警 if(a=b)
		ANSI C extension		:	
			1. 对char,long,short,long long 等数据类型进行位操作时.	
			2. 把char,float,short,或枚举参数指定给如 va_start()函数时 

		Header file not guarded	:	包含一个无保护的头文件时报警, 未使用"",<>包含.
		Double to float			:	改变非限定的浮点常量数据类型时报警
		Long precision in wider context	:	运算产生了数据扩展.则报警,如 int = int * int ; 而 int*int可能为 long	
		Implicit narrowing		:	下列情况下,在int,char的环境中对长表达式有隐含的限制.在整型数或有限的浮点数环境中对浮点表达式有隐含的限制.

		Non ANSI header			:	只对ANSI C 头文件使用包含 # include <>.
		Padding inserted in struct	:	报警编译器在结构中插入补丁.
		C to C++ incompatibility	:	关闭C语言程序中将来可能和C++引起兼容性总理的报警信息.
		Unused declaration			:	定义了,未使用,则报警.

	C++:
		
		Implicit constructor	:	在程序中发现隐含构造器时报警
		Unused this in non-static member funtion : 报警,在非静态的元函数中没有使用隐含的 this 参数.
		Member and base inits out of order	:	关闭由C++程序中构造器初始化的顺序而引起的报警信息.
		Implicit Virtual		:	一个来自在类的非虚元函数中隐藏了一个父类的虚元函数.
		




4. Errors (错误选项设置)

	C/C++: 

		Implicit pointer cast	:	关闭一些隐含的错误,如一个隐含的非零 int 转换到 pointer
		Other dubious cast		:	关闭一些模糊不清的表达错误,例如从short类型到 pointer类型的转换.
		Linkage conflicts		:	关闭一个由于链接不协调而产生的错误.错误的原因的原因是:函数被隐含地声明为extern 后又被声明为 static.
		Junk at end of #endif/ #else / #undef	:	关闭由于预处理结尾有多余字符引而引起的错误信息
		Zero-length arrays		:	关闭由于数组长度为零而引起的错误信息.

	C++:

		Access control violations	:	不选时,则将错误降低为报警.
		Implicit 'int'				:	当在类似 const i的构造中使用隐含的int数据类型时,系统认为是一个错误,使用该选项,则降低到警告.


5. Debug / Optionization (调试和优化选项)
	
	Debug Control		
		Enable debug table generation	:	编译输出的文件中会包含调试信息表.
		Include preprocessor symbol		:	关闭在目标文件中的关于宏定义的调试信息.
		Enable debug table generation	:	指定 DWARF2 格式为调试信息表格式
			DWARF2 是指一个2.0版本的调试信息格式,这是TIC(Tool Interface Standard)国际委员会所制定的,适合32位机的运行环境.

	Optimization Level
		Minmum	:	最低级别优化,编译器只对源程序进行简单的转换,调试信息表最直观.
		Most	:	不完全优化,关闭了一些严重影响高度效果的优化功能.		
		All		:	完全优化,目标代码与源代码之间的对应关系不清晰.

	Optimization Criterion
		For Space	:	优化存储空间
		For time	:	优化运行时间

6. Preprocessor (预定义)

	查看,定义,删除宏.

7. Code Generation (设置关于输出代码的一些规定)
	
	Split load and store multiple	:	指定编译器把LDM和STM指令分解为两个或更多个LDM和STM指令,如果一次传送数据较多,可能会引起超时中断。	
	Narrow double constants to float constants	:	把无后缀的浮点常量从双精度改变为不确定的类型。有些情况下可以改进程序执行速度。
	On ELF section per function	:	指定编译器为源文件的每一个函数生成一段 ELF 格式的输出段,输出段的名称和函数名相同。
	Enum container always int	:	强制把枚举数据都作为整型数据存储。
	Plain char is signed		:	把char型数据作为有符号数据。
	
8. Extras (via 文件格式)

	via 文件,保存,导入,以上设置。


其他命令行选项:(IDE下无法设定的)
	
	seach-paths		设定包含文件的搜索路径。
	code-generation-options	 输出代码的选项。
	output-format
		-asm		产生一个汇编语言的列表文件
		-asm -fs	产生一个汇编语言的列表文件,扩展名是 txt

		-c			只进行编译但不准备链接 

	additional-chechs	附加检测项。
	warning-options	设置报警信息的种类
	preprocessor-options	指定预处理的特性。	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -