只是粘貼一個示例,而不是我的整個代碼,這有點大。當我將代碼移植到VC++而不是使用GCC時,我需要重寫幾個內聯彙編函數,它們接收指針並在這些指針上保存值。將內聯asm寄存器的值保存到C指針,爲了簡單起見,可以在GCC上獲取它,但不是VC
想象CPUID例如:
void cpuid(int* peax, int* pebx, int* pecx, int* pedx, int what){
__asm__ __volatile__("cpuid" : "=a" (*peax), "=b" (*pebx), "=c" (*pecx), "=d" (*pedx) : "a" (what));
}
,這將只是工作,它將被CPUID「返回」保存值的寄存器上,我傳遞給函數指針。
可以使用VC的內聯彙編程序完成相同的操作嗎? 到目前爲止完全相同的函數簽名但:
mov eax, what;
cpuid;
mov dword ptr [peax], eax;
etc
不會工作,PEAX將它調用函數之前有同樣的價值。
在此先感謝。