我正在重新訪問我之前寫過的代碼,它在大量數據上做了一些數學計算。當我編寫代碼時,實驗室有幾個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