同样一段c++代码生成的汇编指令可能会不一样。有多种原因,例如编译器、调用约定或者底层平台。

今天要分析的是cdecl在x86机器上用visual c++ 2005上的编译结果。

首先需要设置一下项目配置以得到从源代码生成的汇编代码。

项目属性->配置属性->c/c++->输出文件->汇编输出 = Assembly With Source Code (/FAs)。

要被编译的源文件是:

 Point3D
{
    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.

相关文章:

  • 2021-09-01
  • 2022-12-23
  • 2022-02-04
  • 2022-12-23
  • 2022-12-23
  • 2021-07-11
  • 2022-12-23
猜你喜欢
  • 2021-06-25
  • 2021-12-08
  • 2021-09-30
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案