● IDE : RENESAS CubeSuiteW+
● MCU : RL78/G13
1 单参数函数
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执行函数体运算,实现函数功能</