当然可以直接取&进行运算,但下面的方法经过实践证明更具有通用性,特别是在模板的应用中。
// 全局函数比较方法
virtual bool Equal(int Function_)
{
int function = 0;
__asm
{
push eax
mov eax, m_Function ; 将容器中的函数指针m_Function地址传给eax
mov function,eax ; 将eax中m_Function的地址传给function.
pop eax
}
return (function == Function_);
}
// 成员函数比较
virtual bool Equal(int Object_,int Function_)
{
int object = 0;
int function = 0;
// 获取_Object和_Function地址, 并且与传入参数进行比较
__asm
{
push eax
mov eax,m_Object ; 将m_Object地址传给eax
mov object,eax ; 将eax 地址传给object
mov eax,m_Function ; 将m_Function地址传给eax
mov function,eax ; 将eax地址传给function
pop eax
}
return (object == Object_ && function == Function_);
}
本文介绍了使用汇编语言实现的两种函数比较方法:全局函数比较和成员函数比较。通过直接操作寄存器来获取函数指针并进行比较,这种方法在某些特定应用场景下能提供更高的灵活性和效率。
1074

被折叠的 条评论
为什么被折叠?



