我有内联汇编的C ++函数:
void getMemAddrFromBIOSbySMI(int& bResult, unsigned long& addr,unsigned long& dataLength){
__asm {
mov eax, 0x000000E3
mov ebx, 0x00000001
mov ecx, 0xFAFAFAFA
mov edx, 0x000000B2
out dx,al
mov bResult, eax
mov addr, ebx
mov dataLength, ecx
}
if((bResult & 0x000000FF) == 0){
bReSult = 1;
}
else {
bResult = 0;
}
}
我想让这段代码可以支持x64,但VC ++ x64不支持内联汇编,我不知道如何将此代码转换为x64汇编格式......
有人可以帮助我吗?
答案 0 :(得分:1)
您可以使用编译器内在__outbyte来写入端口。
答案 1 :(得分:0)
您可以使用__asm _emit
对x64指令进行编码。另外,因为在x64上,通过寄存器RCX和RDX的参数需要在MOV之前保存,然后在访问参数时恢复。