● IDE : RENESAS CubeSuiteW+● MCU : RL78/G131 单参数函数
1.1 C代码
void func(int arg1){
int m,n;
m = arg1 + 2;
n = m - 3;
NOP();
}
void main(void)
{
func(0xF1);
while (1);
}
1.2 反汇编
1.3 分析
在func()的主调函数调用func()时:1)首先将实参0xF1写入通用寄存器AX,利用寄存器传递参数2)跳转到函数体3)将参与函数体内部运算相关的通用寄存器HL压栈4)将用于参数传递的AX压栈(参数入栈区,
此栈地址即为形参arg1的分配地址) 5)将栈指针向下移动两字后的地址写入HL寄存器(
形参arg1的分配地址向下依次代表函数本地变量m,n的地址)6)之后便利用通用寄存器AX和HL执行函数体运算,实现函数功能7)执行完函数体后,将栈指针返回到函数体用到的通用寄存器HL的压栈地址,栈数据出栈归还HL8)最后执行返回RET
1.4 栈空间分配如下表
2 多参数函数
未完待续。。。