敦化市建设局网站,无人在线观看高清视频单曲播放,百度链接提交收录入口,域名注册西部数码在上一篇博文《海光处理器与AMD Zen1的指令差异-CSDN博客》中发现#xff0c;海光相比AMD#xff0c;缺失了一些指令集。 那么在AMD或Intel上编译出来的程序#xff0c;可以跑在海光上吗#xff1f; 这个问题的关键#xff0c;在于编译器默认使用哪些指令来编译程序。以Ce… 在上一篇博文《海光处理器与AMD Zen1的指令差异-CSDN博客》中发现海光相比AMD缺失了一些指令集。 那么在AMD或Intel上编译出来的程序可以跑在海光上吗 这个问题的关键在于编译器默认使用哪些指令来编译程序。以CentOS8.4为例它自带的gcc版本为gcc version 8.4.1 20200928 [rootCentOS8 ~]# gcc -v Using built-in specs. COLLECT_GCC/usr/bin/gcc COLLECT_LTO_WRAPPER/usr/libexec/gcc/x86_64-redhat-linux/8/lto-wrapper OFFLOAD_TARGET_NAMESnvptx-none OFFLOAD_TARGET_DEFAULT1 Target: x86_64-redhat-linux Configured with: ../configure --enable-bootstrap --enable-languagesc,c,fortran,lto --prefix/usr --mandir/usr/share/man --infodir/usr/share/info --with-bugurlhttp://bugzilla.redhat.com/bugzilla --enable-shared --enable-threadsposix --enable-checkingrelease --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-stylegnu --enable-plugin --enable-initfini-array --with-isl --disable-libmpx --enable-offload-targetsnvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tunegeneric --with-arch_32x86-64 --buildx86_64-redhat-linux Thread model: posix gcc version 8.4.1 20200928 (Red Hat 8.4.1-1) (GCC) gcc在编译的时候可通过-march来指定要使用的指令范围默认值为-marchx86-64这个默认值是构建gcc自身时指定的即上表中的--with-arch_32x86-64。 接下来看一下-marchx86-64代表的指令范围。 [rootCentOS8 ~]# gcc -marchx86-64 -c -Q --helptarget | grep -i enabled -m128bit-long-double [enabled] -m64 [enabled] -m80387 [enabled] -malign-stringops [enabled] -mavx256-split-unaligned-load [enabled] -mavx256-split-unaligned-store [enabled] -mfancy-math-387 [enabled] -mfp-ret-in-387 [enabled] -mfxsr [enabled] -mglibc [enabled] -mhard-float [enabled] -mieee-fp [enabled] -mlong-double-80 [enabled] -mmmx [enabled] -mno-sse4 [enabled] -mpush-args [enabled] -mred-zone [enabled] -msse [enabled] -msse2 [enabled] -mstv [enabled] -mtls-direct-seg-refs [enabled] -mvzeroupper [enabled] 这些指令代表什么意思呢 -marchx86-64 of GCC8.4.1(CentOS8.4)x86-64Instructionsm128bit-long-double[enabled]sizeof(long double) is 16.m64[enabled]Generate 64bit x86-64 code.m80387[enabled]Use hardware fp.malign-stringops[enabled]Align destination of the string operations.marchx86-64Generate code for given CPU.mavx256-split-unaligned-load[enabled]d Split 32-byte AVX unaligned load.mavx256-split-unaligned-store[enabled]re Split 32-byte AVX unaligned store.mfancy-math-387[enabled]Generate sin, cos, sqrt for FPU.mfp-ret-in-387[enabled]Return values of functions in FPU registers.mfxsr[enabled]Support FXSAVE and FXRSTOR instructions.mglibc[enabled]Use GNU C library.mhard-float[enabled]Use hardware fp.mieee-fp[enabled]Use IEEE math for fp comparisons.mlong-double-80[enabled]Use 80-bit long double.mmmx[enabled]Support MMX built-in functions.mno-sse4[enabled]Do not support SSE4.1 and SSE4.2 built-in functions and code generation.mpush-args[enabled]Use push instructions to save outgoing arguments.mred-zone[enabled]Use red-zone in the x86-64 code.msse[enabled]Support MMX and SSE built-in functions and code generation.msse2[enabled]Support MMX, SSE and SSE2 built-in functions and code generation.mstv[enabled]Disable Scalar to Vector optimization pass transforming 64-bit integer computations into a vector ones.mtls-direct-seg-refs[enabled]Use direct references against %gs when accessing tls data.mvzeroupper[enabled]Generate vzeroupper instruction before a transfer of control flow out of the function. 很明显这个-marchx86-64代表的指令范围很小海光全部都支持。所以默认情况下在AMD上编译的程序依然可以跑在海光上。 如果gcc编译的时候指定-marchznver1那么海光可以运行吗答案是否定的因为至少有2个指令集海光是不支持的aes和pclmul。 只有一种特例那就是程序本身并不涉及加解密编译之后的汇编代码不包括aes和pclmul相关指令即使编译的时候指定-marchznver1那么这个程序还是可以跑在海光上的。 -march??? of GCC8.4.1(CentOS8.4)x86-64znver1m128bit-long-double[enabled][enabled]m64[enabled][enabled]m80387[enabled][enabled]mabm[disabled][enabled]madx[disabled][enabled]maes[disabled][enabled]malign-stringops[enabled][enabled]marchx86-64znver1mavx[disabled][enabled]mavx2[disabled][enabled]mavx256-split-unaligned-store[enabled][enabled]mbmi[disabled][enabled]mbmi2[disabled][enabled]mclflushopt[disabled][enabled]mclzero[disabled][enabled]mcx16[disabled][enabled]mf16c[disabled][enabled]mfancy-math-387[enabled][enabled]mfma[disabled][enabled]mfp-ret-in-387[enabled][enabled]mfsgsbase[disabled][enabled]mfxsr[enabled][enabled]mglibc[enabled][enabled]mhard-float[enabled][enabled]mieee-fp[enabled][enabled]mlong-double-80[enabled][enabled]mlzcnt[disabled][enabled]mmmx[enabled][enabled]mmovbe[disabled][enabled]mmwaitx[disabled][enabled]mpclmul[disabled][enabled]mpopcnt[disabled][enabled]mprfchw[disabled][enabled]mpush-args[enabled][enabled]mrdrnd[disabled][enabled]mrdseed[disabled][enabled]mred-zone[enabled][enabled]msahf[disabled][enabled]msha[disabled][enabled]msse[enabled][enabled]msse2[enabled][enabled]msse3[disabled][enabled]msse4[disabled][enabled]msse4.1[disabled][enabled]msse4.2[disabled][enabled]msse4a[disabled][enabled]mssse3[disabled][enabled]mstv[enabled][enabled]mtls-direct-seg-refs[enabled][enabled]mtunegenericznver1mvzeroupper[enabled][enabled]mxsave[disabled][enabled]mxsavec[disabled][enabled]mxsaveopt[disabled][enabled]mxsaves[disabled][enabled] 如果你觉得有用请点赞收藏哈