如何在单独的asm文件中包含c++头文件,引用c++类成员变量
怎么在单独的asm文件中包含c++头文件,引用c++类成员变量?
下面是一个c++类,和一个内嵌汇编的main函数:
test.h
main.cpp
因为x64 vc++不支持内嵌汇编,所以,想把
------解决方案--------------------
这种写法不靠谱啊
------解决方案--------------------
根本不要asm:
int main(int agrc,char* argv[])
{
CTest* pTest = new CTest();
pTest->Init();
// _asm
// {
// mov eax,pTest
// call CTest::Init
// }
pTest->Show();
pTest->Destory();
delete pTest;
return 0;
}
------解决方案--------------------
你这么做目的何在?
------解决方案--------------------
C写调用函数,编译生成交叉文件,然后从交叉文件中提取或参考交叉文件修改
下面是一个c++类,和一个内嵌汇编的main函数:
test.h
#pragma once
#include <stdio.h>
#include <string.h>
class CTest
{
public:
void Init()
{
m_nSize = 100;
m_pContent = new char[m_nSize];
strcpy(m_pContent,"hello world!");
}
void Show()
{
printf("%s\n",m_pContent);
}
void Destory()
{
if (m_pContent)
{
delete[] m_pContent;
m_pContent = NULL;
}
m_nSize = 0;
}
private:
int m_nSize;
char* m_pContent;
};
main.cpp
#include "Test.h"
int main(int agrc,char* argv[])
{
CTest* pTest = new CTest();
_asm
{
mov eax,pTest
call CTest::Init
}
pTest->Show();
pTest->Destory();
delete pTest;
return 0;
}
因为x64 vc++不支持内嵌汇编,所以,想把
_asm单独提取出来,test.asm,请问该怎么提取呢?
{
mov eax,pTest
call CTest::Init
}
------解决方案--------------------
这种写法不靠谱啊
------解决方案--------------------
根本不要asm:
int main(int agrc,char* argv[])
{
CTest* pTest = new CTest();
pTest->Init();
// _asm
// {
// mov eax,pTest
// call CTest::Init
// }
pTest->Show();
pTest->Destory();
delete pTest;
return 0;
}
------解决方案--------------------
你这么做目的何在?
------解决方案--------------------
C写调用函数,编译生成交叉文件,然后从交叉文件中提取或参考交叉文件修改