运行在不同 SPARC 处理器上的 GCC 编译器为 C 程序预定义了哪些宏。操作系统是Linux。
那么如何在编译时区分 UltraSPARC、SuperSPARC、Niagara、SPARC64 等。
谢谢
运行在不同 SPARC 处理器上的 GCC 编译器为 C 程序预定义了哪些宏。操作系统是Linux。
那么如何在编译时区分 UltraSPARC、SuperSPARC、Niagara、SPARC64 等。
谢谢
找出答案的最简单方法是对其进行测试,例如:
$ gcc <whatever you need to specify first CPU> -dM -E - < /dev/null &> cpu1.txt
$ gcc <whatever you need to specify second CPU> -dM -E - < /dev/null &> cpu2.txt
$ sdiff -s cpu1.txt cpu2.txt
看看 gcc 规格:
gcc -dumpspecs
...跳过...
%{msoft-float:-D_SOFT_FLOAT} %{mcypress:} %{msparclite:-D__sparclite__} %{mf930:-D__sparclite__} %{mf934:-D__sparclite__} %{mv8:-D__sparc_v8__} %{msupersparc:-D__supersparc__ -D__sparc_v8__} %{mcpu=sparclet:-D__sparclet__} %{mcpu=tsc701:-D__sparclet__} %{mcpu=sparclite:-D__sparclite__} %{mcpu=f930:-D__sparclite__} %{mcpu=f934:-D__sparclite__} %{mcpu=v8:-D__sparc_v8__} %{mcpu=supersparc:-D__supersparc__ -D__sparc_v8__} %{mcpu=hypersparc:-D__hypersparc__ -D__sparc_v8__} %{mcpu=sparclite86x:-D__sparclite86x__} %{mcpu=v9:-D__sparc_v9__} %{mcpu=ultrasparc:-D__sparc_v9__} %{mcpu=ultrasparc3:-D__sparc_v9__} %{mcpu=niagara:-D__sparc_v9__} %{mcpu=niagara2:-D__sparc_v9__} %{!mcpu*:%{!mcypress:%{!msparclite:%{!mf930:%{!mf934:%{!mv8:%{!msupersparc:%(cpp_cpu_default)}}}}}}}
有一个已识别mcpu
的列表和-D
宏列表。
接下来是
%{mcpu=sparclet:-Asparclet} %{mcpu=tsc701:-Asparclet} %{msparclite:-Asparclite} %{mf930:-Asparclite} %{mf934:-Asparclite} %{mcpu=sparclite:-Asparclite} %{mcpu=sparclite86x:-Asparclite} %{mcpu=f930:-Asparclite} %{mcpu=f934:-Asparclite} %{mv8plus:-Av8plus} %{mcpu=v9:-Av9} %{mcpu=ultrasparc:%{!mv8plus:-Av9a}} %{mcpu=ultrasparc3:%{!mv8plus:-Av9b}} %{mcpu=niagara:%{!mv8plus:-Av9b}} %{mcpu=niagara2:%{!mv8plus:-Av9b}} %{!mcpu*:%{!mcypress:%{!msparclite:%{!mf930:%{!mf934:%{!mv8:%{!msupersparc:%(asm_cpu_default)}}}}}}}
翻译-mcpu
成-A
希望这可以帮助