同样一段c++代码生成的汇编指令可能会不一样。有多种原因,例如编译器、调用约定或者底层平台。
今天要分析的是cdecl在x86机器上用visual c++ 2005上的编译结果。
首先需要设置一下项目配置以得到从源代码生成的汇编代码。
项目属性->配置属性->c/c++->输出文件->汇编输出 = Assembly With Source Code (/FAs)。
要被编译的源文件是:
{
int X;
int Y;
int Z;
Point3D(int x, int y, int z):X(x),Y(y),Z(z)
{}
};
Point3D AddPoint3D(Point3D p1, Point3D p2)
{
Point3D p(p1);
p.X += p2.X;
p.Y += p2.Y;
p.Z += p2.Z;
return p;
}
void main()
{
Point3D p1(1,2,3);
Point3D p2(4,5,6);
Point3D p3 = AddPoint3D(p1,p2);
}
生成的汇编代码是:
That's it.