Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 汇编函数调用x64 VC++;_C++_Visual C++_64 Bit_Inline Assembly - Fatal编程技术网

C++ 汇编函数调用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

所以我正在为main编写一个包装器,并且仍然提供了一个类似main的功能,所以用户可以定义int main()或int main(argc,argv),这两个功能都可以正常工作。我能够为一些具有内联汇编的编译器做到这一点,在调用用户的main之前将argc&argv推到堆栈上。但是,对于x64 VC++,没有内联程序集,所以有没有关于如何实现这一点的建议


谢谢

> 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哈