所以我在汇编ARMv8中编程,我想知道是否有任何指令,如x86,来恢复有关CPU的信息。这是我需要的信息:
(CPUID) 签名:660f01
(CPUID) 特性:MMX、AMD64、SSE、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2、AES、AVX、CLMUL、FMA、FMA4、XOP、PSE、PSE-36、NX、SVM
(CPUID) 缓存 L1:4 x 32 KB 数据,4 x 96 KB 指令 (CPUID) 缓存 L2:4 x 1 MB 统一 (CPUID) 缓存 L3:无
或者手臂上的等价物。例如,我知道 ARMS 不支持 MMX,但它支持 NEON。如何检查该处理器是否支持它?
因此,我正在使用 A64 指令集以汇编形式 ARM 进行编程。我正在使用指令 fmov d1, #31.0 将值移动到 dx 寄存器。但是,当我使用 0.0 或任何高于 31.0 的值时,它会显示错误:
"Error: invalid floating-point constant at operand 2 -- `fmov d1,#32.0'"
Run Code Online (Sandbox Code Playgroud)
那么,如何在 A64 上定义浮点常量?为什么我不能使用 31 以上的任何值或使用 0?如何以十六进制表示值?
另一个问题是:根据arm 的网站,它支持使用浮点寄存器作为 Bx、Hx、Sx、Dx 和 Qx(分别为 8、16、34、64 和 128 位),但我不能使用 Bx ,Hx 和 Qx 寄存器,显示:
“错误:操作数不匹配——`fmov b1,#1.0'”
“错误:所选处理器不支持`fmov h1,#2.0”
“错误:操作数不匹配——`fmov q1,#2.0'”
如何正确设置第二个操作数?