上次的课中都是使用C代码生成汇编代码,这次课中将使用C++代码生成汇编代码,对比结果发现这两种语言最终生成的代码形式很像。
C语言版本:
void foo()
{
int x;
int y;
x=11;
y=17;
swap(&x,&y);
}
对应的汇编代码:
SP=SP-8;
M[SP+4]=11;
M[SP]=17;
R1=SP;//&y
R2=SP+4;//&x
SP=SP-8;
M[SP]=R2;
M[SP+4]=R1;
CALL<swap>;
SP=SP+8;//与第6行代码抵消
SP=SP+8;//与第1行代码抵消
RET;
活动记录示意图:
注意:
1.Saved PC中关联着调用foo的函数的相关信息&