Function VC++;编译到英特尔机器代码还是中间代码?

Function VC++;编译到英特尔机器代码还是中间代码?,function,visual-c++,pointers,assembly,x86-16,Function,Visual C++,Pointers,Assembly,X86 16,我想知道VC++中的函数指针是否可以指向包含x86机器代码的预初始化内存块。然后我可以使用函数指针在该位置执行代码吗 即 这会继续执行位置0x4A152处的x86代码吗?还是会因为该位置需要中间代码而阻塞?您的顶级问题: “VC++到底是编译成机器代码还是中间代码?” 你得问问史密斯女士 但考虑到它们针对的是不同的平台(至少是CLR和原生x86),我猜编译器是分阶段运行的: 解析VC++ < LI>生成C++代码的高级“中间”表示形式 a) 生成CLR代码或b)生成本机x86代码 我不确定你

我想知道VC++中的函数指针是否可以指向包含x86机器代码的预初始化内存块。然后我可以使用函数指针在该位置执行代码吗

这会继续执行位置0x4A152处的x86代码吗?还是会因为该位置需要中间代码而阻塞?

您的顶级问题: “VC++到底是编译成机器代码还是中间代码?” 你得问问史密斯女士

但考虑到它们针对的是不同的平台(至少是CLR和原生x86),我猜编译器是分阶段运行的:

  • 解析VC++
  • < LI>生成C++代码的高级“中间”表示形式
  • a) 生成CLR代码或b)生成本机x86代码
我不确定你的主要问题和详细问题之间有什么联系,但无论如何


是的,您应该能够使用强制转换将VC++函数指针设置为指向任意x86代码块。您必须确保代码遵循所有VC++调用/返回约定。如果VC++代码被编译为CLR代码,那么调用约定可能包括一些方法来表示函数是更多的CLR代码,或者是原生x86代码。查看MS文档中的调用约定。

标题和问题正文并不完全匹配,您到底在问什么?我看到了混淆。我要做的是编写C++代码,并在VC++中编译它,一个核心组件。然后我希望其他人编写库并从主组件访问它们。我希望函数指针不会看到垃圾。函数指针在C++中工作没有问题。你的情况听起来像C++的“主要组件”通过函数指针调用C++“你的代码库”。为什么这不只是通过函数指针进行的标准函数调用?
void (*functionPointerToStartOfCodeSegment)(void);

functionPointerToStartOfCodeSegment = 0x4A152;

*functionPointerToStartOfCodeSegment();