C++ 汇编函数调用x64 VC++;
所以我正在为main编写一个包装器,并且仍然提供了一个类似main的功能,所以用户可以定义int main()或int main(argc,argv),这两个功能都可以正常工作。我能够为一些具有内联汇编的编译器做到这一点,在调用用户的main之前将argc&argv推到堆栈上。但是,对于x64 VC++,没有内联程序集,所以有没有关于如何实现这一点的建议C++ 汇编函数调用x64 VC++;,c++,visual-c++,64-bit,inline-assembly,C++,Visual C++,64 Bit,Inline Assembly,所以我正在为main编写一个包装器,并且仍然提供了一个类似main的功能,所以用户可以定义int main()或int main(argc,argv),这两个功能都可以正常工作。我能够为一些具有内联汇编的编译器做到这一点,在调用用户的main之前将argc&argv推到堆栈上。但是,对于x64 VC++,没有内联程序集,所以有没有关于如何实现这一点的建议 谢谢> P>我看到两个明显的选择:要么用汇编语言编写代码,要么包含在汇编语言文件中,要么在C++中编写代码,而不使用任何内联汇编: void
谢谢> P>我看到两个明显的选择:要么用汇编语言编写代码,要么包含在汇编语言文件中,要么在C++中编写代码,而不使用任何内联汇编:
void my_entry_point() {
int argc = foo();
int argv = bar();
int ret = main(argc, argv);
exit_to_os(ret);
}
什么?如何“包装”
main
?调用用户的主服务器?:包装器为什么需要在汇编中编写?只需用C编写包装器,然后让编译器完成工作。尤其是因为x64调用约定不在堆栈上传递参数。它还需要展开代码。@CantChooseServerNames:至少有一个主编译器(gcc)定义了一个包装函数,该函数调用您的main
(参见示例)。当从程序中挤出最后的字节时,这可能是很有用的知识。doh太专注于内联是不允许的,以至于我忘记了一个简单的旧ASM哈