C++ MSVC,x64,是否可以在函数内发出任意字节?

C++ MSVC,x64,是否可以在函数内发出任意字节?,c++,visual-c++,x86-64,masm,inline-assembly,C++,Visual C++,X86 64,Masm,Inline Assembly,不幸的是,MSVC x64 cl编译器不再支持函数内部的_asm指令(内联汇编程序),这是 __asm _emit <byte> \u asm\u emit 指令也变得不可用,这与gcc不同(gcc支持以下指令: __asm __volatile__ (".byte " <byte> ";") \uuuuasm\uuuuu volatile\uuuuuu(“.byte”;”) 适用于任何平台(i386、x86-64甚至非x86) 对我来说,这是从MinGW到MS

不幸的是,MSVC x64 cl编译器不再支持函数内部的_asm指令(内联汇编程序),这是

__asm _emit <byte>
\u asm\u emit
指令也变得不可用,这与gcc不同(gcc支持以下指令:

__asm __volatile__ (".byte " <byte> ";") 
\uuuuasm\uuuuu volatile\uuuuuu(“.byte”;”)
适用于任何平台(i386、x86-64甚至非x86)

对我来说,这是从MinGW到MSVC编译器的一大障碍


我问这个问题的目的是希望有人知道如何在函数的机器代码中保留或放置一些任意的字节序列?

是否有一个特定的字节是您试图发出的?我很好奇你是否在发送数据或指令。如果是数据,为什么必须在函数中发出它们?据我所知,你根本不能。GCC和clang通常优化得更好,所以如果您已经在使用GNUCinlineASM,那么为什么要切换呢?如果要使用AVX(因为MinGW在Windows上可能仍然无法进行堆栈对齐),请使用clang。另一种方法是使用ICC(英特尔)编译器,它支持64位代码中的MSVC内联汇编,也支持GCC样式的内联汇编。@MichaelPetch是的,它是特定的字节集。简言之,这与我的一个内置代码保护器有关。不幸的是(据我所知),英特尔编译器不是免费的,如果我们谈论我的动机(从MinGW迁移到MSVC),它是一个google crashpad库,我想内置它来提高应用程序的稳定性。不幸的是,在Windows平台上,它只支持form MSVC编译器。我做了一些调查,发现我可以使用内在的_nop()在函数中“保留”一些字节。但问题是,我应该创建外部工具来处理编译二进制文件并填充这些值……是否有一个特定的字节您正试图发出?我很好奇你是否在发送数据或指令。如果是数据,为什么必须在函数中发出它们?据我所知,你根本不能。GCC和clang通常优化得更好,所以如果您已经在使用GNUCinlineASM,那么为什么要切换呢?如果要使用AVX(因为MinGW在Windows上可能仍然无法进行堆栈对齐),请使用clang。另一种方法是使用ICC(英特尔)编译器,它支持64位代码中的MSVC内联汇编,也支持GCC样式的内联汇编。@MichaelPetch是的,它是特定的字节集。简言之,这与我的一个内置代码保护器有关。不幸的是(据我所知),英特尔编译器不是免费的,如果我们谈论我的动机(从MinGW迁移到MSVC),它是一个google crashpad库,我想内置它来提高应用程序的稳定性。不幸的是,在Windows平台上,它只支持form MSVC编译器。我做了一些调查,发现我可以使用内在的_nop()在函数中“保留”一些字节。但问题是我应该创建外部工具来处理编译二进制文件并填充这些值。。。