我知道x64模式下的MSVC编译器不支持内联汇编代码片段,并且为了使用汇编代码,你必须在一些外部my_asm_funcs.asm文件中定义你的函数,如下所示:
my_asm_func PROC
mov rax, rcx
ret
my_asm_func ENDP
Run Code Online (Sandbox Code Playgroud)
然后在你的.c或.h文件中为这个函数定义一个标题:
int my_asm_func(int x);
Run Code Online (Sandbox Code Playgroud)
虽然该解决方案解决了许多问题,但我仍然有兴趣使汇编代码函数内联,换句话说 - 在编译之后我不想对my_asm_func进行任何"调用" ,我只是希望这个程序集被粘合进入我的最终编译代码.我尝试使用inline和__forceinline关键字声明该函数,但似乎没有任何帮助.还有什么办法可以做我想要的吗?
为了在 OpenGL 中渲染视频,我遵循了Nehe 的本教程。我正在尝试在 x64 上构建它,但是在编译代码时它给了我一个错误,它指向 flipIt(void* buffer) 函数。是写的不好还是需要导入库?
void Video::flipIt(void* buffer)
{
void* b = buffer;
__asm
{
mov ecx, 256 * 256
mov ebx, b
label :
mov al, [ebx + 0]
mov ah, [ebx + 2]
mov[ebx + 2], al
mov[ebx + 0], ah
add ebx, 3
dec ecx
jnz label
}
}
Run Code Online (Sandbox Code Playgroud)