ARM编译中,-m选项的定义和参数如下:
项目 | 说明 | 允许值 |
-mabi=name | 为指定的ABI生成代码。 | 可选值:"iwmmxt","apcs-gnu","atpcs","aapcs","aapcs-linux" |
-mapcs-frame | 生成符合所有功能的ARM过程调用标准的堆栈框架,即使这对于正确执行代码不是绝对必要的。 | 缺省值:-mno-apcs-frame,不建议使用。 赋值"-fomit-frame-pointer"时,将不会为子函数生成堆栈帧。 |
-mapcs | 与-mapcs-frame是同义词,不建议使用。 | / |
-mthumb-interwork | 生成支持ARM和Thumb指令集之间调用的代码。 如果不使用此选项,则在v5之前的体系结构上,无法在一个程序内部可靠地使用两个指令集。 | 缺省值:-mno-thumb-interwork。 可选值:-mthumb-interwork,选择此值时,会生成大量代码,所以在AAPCS配置中,这个常常不会使用,意义不大。 |
-mno-sched-prolog | 防止对函数序言中的指令进行重新排序,或将这些指令与函数主体中的指令合并。这意味着所有功能都以一组可识别的指令开始(或者实际上是从一小组不同功能序言中选择的一个),并且该信息可用于在可执行代码段中定位功能的开始。 | 缺省值:-msched-prolog |
-mfloat-abi=name | 指定要使用的浮点ABI。 | 可选值:“soft”,“softfp”和“ hard”。 soft:gcc会生成包含浮点运算的库,调用软件库函数进行编译生成。 softfp:gcc生成代码时,运行使用硬件浮点指令生成计算代码,但是会使用软浮点调用。 hard:gcc生成浮点指令,并使用特定的FPU进行调用,使用FPU在计算浮点时,效率更快。 默认值取决于目标配置,上述3个参数互相不兼容,对于整个系统,必须使用同一配置。 例如:嵌入式SDK使用hard参数,在使用SDK环境编译“应用程序”时,不可以单独设定soft编译。 |
以上,未完待续