作者:mobiledu2502923581 | 来源:互联网 | 2023-10-12 20:17
C++内嵌汇编主要解决一些关键算法运行效率(比如基础图像处理算法上的优化,比如矩阵运算,图像二值化)还有一些专有功能的指令集(比如cpuid指令,是获取cpu特性的专有指令,VM虚拟机的检测)。
cpuid指令:https://blog.csdn.net/swanabin/article/details/20050545
VMWare虚拟机检测:https://blog.csdn.net/devday/article/details/6842565
简单的C++内嵌汇编:
int add(int a,int b)
{
int value = 0;
asm
{
mov eax,a
mov ebx,b
add eax,abx
mov value,eax
}
return value;
}
反过来汇编调用C++根据堆栈:比如在汇编中调用上面的add:
//首先将变量存入寄存器比如,eax,ebx
//然后push对应寄存器,由于C++调用规范,可以参考下面这篇文章,到底在具体调用时候压栈的顺序与函数声明调用规范有关,这里不展开。
//https://blog.csdn.net/Moke_8453/article/details/81275763
push eax
push ebx
call add
//然后eax便会存放add函数计算出来的值,假如是一个小于32位的整形数,会直接返回值,否则返回指针存放在eax。