我正在重新访问我之前写过的代码,它在大量数据上做了一些数学计算。当我编写代码时,实验室有几个x86分为32位和64位。我的工作是在UltraSPARC上,我隐约记得从英特尔手册中提取这行代码以确保代码在64位CPU上使用。在这个asm行中.byte是什么意思?
unsigned long x[4];
x[0] = 0;
x[1] = 0;
x[2] = 0;
x[3] = 0;
asm volatile(".byte 15;.byte 162" : "=a"(x[0]),"=b"(x[1]),"=c"(x[3]),"=d"(x[2]) : "0"(0));
如果x [0]是0,一切都很好,程序开始慢慢消失。
任何人都可以向我解释这行代码实际上做了什么?
15是为0x0F,所以我想这是一些操作码。乘? –
0FA2(15,162,十进制)是CPUID指令。我想有更简单的方法来使用它。 – harold