我想通過asm塊調用C++成員函數。編譯器是MSVC++(VS2008),可移植性不是問題。我必須爲嵌入式系統構建一個遠程/ RMI類型的機制。客戶端發送對象名稱,方法名稱,參數(序列化),我需要調用該方法適當的對象。我可以從PDB文件中獲得的類型信息。我需要編寫一個通用的Invoke函數。我被困在如何調用一個將對象作爲參數的成員函數。 Specifially。我無法獲得指向複製ctor的指針。任何想法。從asm調用引用參數的C++成員函數
PS:以下編譯代碼並正確對C ::函數引用
#include <stdio.h>
struct Point
{
int x;
int y;
Point()
{
x = 10;
y =10;
}
Point(const Point& p)
{
x = p.x;
y = p.y;
}
virtual ~Point()
{
}
};
class C
{
public:
void funcRef(Point& p)
{
printf("C::funcRef\n x= %d, y =%d\n", p.x, p.y);
}
void funcObj(Point p)
{
printf("C::funcObj\nx = %d y = %d\n", p.x, p.y);
}
};
void main()
{
C* c = new C;
Point p;
//c->funcRef(p);
// this works
__asm
{
lea eax, p;
push eax;
mov ecx, c;
call [C::funcRef];
}
// c->funcObj(p);
__asm
{
sub esp, 12; // make room for sizeof(Point)
mov ecx, esp;
lea eax, p;
push eax;
// how to call copy ctor here
mov ecx, c;
call [C::funcObj];
}
}
這裏的人們:http://www.asmcommunity.net/board/index.php?topic=17897.0似乎認爲你不能拷貝構造函數的地址。 – us2012