【发布时间】:2012-06-02 05:41:57
【问题描述】:
该文件包含本机汇编代码,我想在当前进程中运行它。 但我不想创建真正的文件(.com 或 .exe),所以我尝试了:
...
using namespace std;
typedef void bitcode();
void testcode(){
cout<<"test";
};
int main()
{
bitcode *c=&testcode; // bitcode *c stands for the file containing the assembly code.
bitcode *d=reinterpret_cast<bitcode*> (malloc(20));
memcpy(d, c, 20);
d(); // it doesn't work
return 0;
};
但是,当我调用 d(); 时它不起作用。我想知道用 C/C++ 做这件事的正确方法是什么。
(我在 Windows 上,如果你能告诉我如何在 Linux 上制作它,我将不胜感激)
非常感谢!
PS:我不问“在另一个进程中运行可执行文件而不创建新进程。”
【问题讨论】:
-
看来内联汇编应该放在C/CPP源文件中,编译成.com或者.exe,但是我想在进程运行的时候把汇编代码放在文件里.
-
当你说“本机汇编代码”时,你是指像
xchg eax, eax这样的汇编指令,还是像0x90这样的汇编机器代码? -
后者,汇编机器码如
0x90
标签: c++ c assembly native-code