第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