天天看点

第48部分- Linux x86 64位汇编 C++调用汇编第48部分- Linux x86 64位汇编 C++调用汇编

第48部分- Linux x86 64位汇编 C++调用汇编

C++程序中使用所有函数都使用C++样式的命名和调用约定。

但是使用汇编函数也是使用C语言的调用约定。

但是要通知编译器使用哪些函数是C函数,通过extern语句来完成。

示例

定义C++文件externtest.cpp如下:

#include <iostream>

extern "C" {
   int square(int);
   float areafunc(int);
   char *cpuidfunc(void);
}


int main()
{
   int radius = 10;
   int radsquare = square(radius);
   char* cpuid = cpuidfunc();
   std::cout << "The radius squared is " << radsquare << std::endl;
   float result;
   result = areafunc(radius);
   std::cout << "The area is " << result << std::endl;
   std::cout << "The CPUID is " << cpuid << std::endl;
   return 0;
}
           

需要包含之前的3个汇编语言文件:

square.s,areafunc.s,cpuidfunc.s

编译命令:

g++ -o externtest externtest.cpp square.s areafunc.s  cpuidfunc.s  -no-pie

# ./externtest

The radius squared is 100

The area is 314.159

The CPUID is GenuineIntel

继续阅读