-
-mcpu=vX.YY.Z
- 该选项指令编译器生成适合 MicroBlaze 硬件版本 v.X.YY.Z 的代码。要为给定处理器获取最优化的正确代码,请将此开关搭配处理器的硬件版本一起使用。
-mcpu
开关行为因版本而异,如下所述:- 低于 v3.00.a 的版本
- 使用 3 阶处理器流水线模式。不禁止例外,导致指令被移入延迟时隙。
- v3.00.a 和 v4.00.a
- 使用 3 阶处理器流水线模型。禁止例外,导致指令被移入延迟时隙。
- v5.00.a 及更高版本
- 使用 5 阶处理器流水线模型。不禁止例外,导致指令被移入延迟时隙。
-
-mlittle-endian
/-mbig-endian
- 使用这些选项可以选择要为其编译代码的目标机器的字节序。生成的二进制对象文件的字节序同样根据此开关进行相应设置。GCC 驱动程序将开关传递给子工具(as、cc1、cc1plus、ld)以在子工具中设置对应的字节序。
默认值为
-mbig-endian
。您不能将混合字节序的对象文件链接在一起。
-
-mno-xl-soft-mul
- 该选项允许将硬件乘法指令用于 32 位乘法。MicroBlaze 处理器具有开启或关闭硬件乘法器资源使用的选项。在 MicroBlaze 处理器上弃用硬件乘法器选项时,应使用该选项。使用硬件乘法器可以改善应用性能。使用此开关时,编译器会自动定义 C 语言预处理器定义
HAVE_HW_MUL
。这样即可允许您根据该特性指定为可用或不可用,按硬件需求编写 C 语言代码或汇编代码。 -
-mxl-multiply-high
-
MicroBlaze 处理器具有启用指令以计算 32x32 位乘法的高 32 位的选项。该选项会告知编译器使用这些高位乘法指令。使用此开关时,编译器会自动定义 C 语言预处理器定义
HAVE_HW_MUL_HIGH
。这样即可允许您根据该特性可用或不可用,按硬件需求编写 C 语言代码或汇编代码。 -
-mno-xl-multiply-high
- 不使用高位乘法指令。该选项为默认选项。
-
-mxl-soft-mul
- 该选项会告知编译器,在 MicroBlaze 处理器上不存在硬件乘法器单元,因此每个 32 位乘法运算都将替换为调用软件仿真
routine__mulsi3
。该选项为默认选项。 -
-mno-xl-soft-div
- 您可以在 MicroBlaze 中例化硬件除法单元。当存在除法单元时,该选项会告知编译器,在编译的程序中可以使用硬件除法指令。
如果程序包含大量除法运算,该选项可以改善程序性能。使用此开关时,编译器会自动定义 C 语言预处理器定义
HAVE_HW_DIV
。这样即可允许您根据该特性指定为可用或不可用,按硬件需求编写 C 语言代码或汇编代码。 -
-mxl-soft-div
- 该选项告知编译器,在目标 MicroBlaze 硬件上不存在硬件除法单元。
该选项为默认选项。编译器会将所有 32 位除法替换为调用对应的软件仿真例程(
__divsi3
、__udivsi3
)。 -
-mxl-barrel-shift
-
MicroBlaze 处理器可配置为随桶式移位器一起构建。要使用处理器的桶式移位器功能,请使用
-mxl-barrel-shift
选项。默认选项假定不存在任何桶式移位器,并且编译器使用加法和乘法运算来执行操作数移位。启用桶式移位器可以显著加速应用,使用浮点库时尤其如此。使用此开关时,编译器会自动定义 C 语言预处理器定义
HAVE_HW_BSHIFT
。这样即可允许您根据该特性是否指定为可用,按硬件需求编写 C 语言代码或汇编代码。 -
-mno-xl-barrel-shift
- 该选项告知编译器不使用硬件桶式移位器指令。该选项为默认选项。
-
-mxl-pattern-compare
- 该选项用于激活在编译器内使用模式比较指令的功能。
使用模式比较指令可以在程序内加速布尔值运算。模式比较操作还允许在字符串处理例程(例如,
strcpy
、strlen
和strcmp
)上对字长数据进行操作,而不是对字节长度数据进行操作。在极为依赖字符串处理例程的程序上,将能够显著提升速度。使用此开关时,编译器会自动定义 C 语言预处理器定义HAVE_HW_PCMP
。这样即可允许您根据该特性指定为可用或不可用,按硬件需求编写 C 语言代码或汇编代码。 -
-mno-xl-pattern-compare
- 该选项会告知编译器不使用模式比较指令。这是默认方式。
-
-mhard-float
- 该选项会在编译器内开启单精度浮点指令(
fadd
、frsub
、fmul
和fdiv
)的使用。它还使用
fcmp.p
指令,其中 p 是谓词条件,例如,le
、ge
、lt
、gt
、eq
或ne
。当在硬件中启用 FPU 时,这些指令由 MicroBlaze 在本地进行解码和执行。使用此开关时,编译器会自动定义 C 语言预处理器定义HAVE_HW_FPU
。这样即可允许您根据该特性指定为可用或不可用,按硬件需求编写 C 语言代码或汇编代码。 -
-msoft-float
- 该选项会告知编译器,使用软件仿真来执行浮点算术。该选项为默认选项。
-
-mxl-float-convert
- 该选项可以在编译器中开启单精度浮点转换指令(fint 和 flt)的使用。当在硬件中启用 FPU 并启用这些可选指令时,这些指令由 MicroBlaze 在本地进行解码和执行。
-
-mxl-float-sqrt
- 该选项会在编译器内开启单精度浮点平方根指令 (
fsqrt
) 的使用。当在硬件中启用 FPU 并启用这些可选指令时,这些指令由 MicroBlaze 在本地进行解码和执行。