第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