2013-12-16 66 views
0

我想调用在asm文件中定义一个函数并从Cpp文件/函数中调用此函数。另外我必须在64位平台上编译这个项目。从C++调用asm

请帮助我这么做,因为我对汇编代码没有多少了解。任何帮助将不胜感激。

感谢

回答

0

的代码段会有所帮助,但如果你要放置一个普通的C++函数内联汇编,则可以通过将其放置在一个ASM块这样做:

void myClass::myFunc() { 
    // cpp code 
    int a = 0; 
    // ... 

    // asm code 
    __asm { 
     mov eax, ebx; 
     // ... 
    }; 

    // more cpp code 
    // ... 
} 
+1

内联asm仅32位(Visual Studio)。 64位ASM必须位于单独的文件中。 – egur

+0

Hi Smith, 首先感谢您的帮助。 但我不想将内联程序集放在常规C++函数中,因为我们无法在x64上编译它。我们需要在汇编代码中将64位的asm/s文件分开 – vsoni

2

This file是来自ffdshow的ASM文件,它执行一些使用CPUID的工作。它是x64和x86。 YASM被用来组装它。

大多数人今天所做的并不是编写ASM代码,而是使用内在函数。所有SSE/AVX /等都有内在的功能。即使对于低级别的ring0指令。内部函数允许编译器进行额外的优化,并在32位和64位版本之间共享。