一个函数只调用一个函数的情况:
bp用于内部取值,及保护sp。
操纵bp,要么操作局部变量(bp减,因为新数据的地址是越来越小的),要么操作参数(bp加)。
业务逻辑里面都是在操纵bp。
第二种情况:寄存器保护,函数中用到寄存器,且里面有以前的值:
为什么先保护bp和sp,分配完局部变量控件之后,才保护寄存器?
——因为为了方便使用bp操纵局部变量区域。若是先保护寄存器,使用bp取值的时候还要跨过若干个寄存器,用了多少个寄存器是不确定的。
bp用于内部取值,及保护sp。
操纵bp,要么操作局部变量(bp减,因为新数据的地址是越来越小的),要么操作参数(bp加)。
业务逻辑里面都是在操纵bp。
为什么先保护bp和sp,分配完局部变量控件之后,才保护寄存器?
——因为为了方便使用bp操纵局部变量区域。若是先保护寄存器,使用bp取值的时候还要跨过若干个寄存器,用了多少个寄存器是不确定的。