C语言函数调用
栈帧
- 在程序运行时,用栈保存一个函数调用所需要维护的信息,这被称为一个函数的栈帧或者活动记录,一个函数调用过程通常需要以下几方面信息:
** 函数返回地址
** 函数参数
** 临时变量
** 保存的上下文:包括函数调用前后需要保持不变的寄存器
栈的生长方向---向下生长
- 即栈顶元素的地址最小,后入栈的元素地址比先入栈的小,栈是向下生长的
多字节数据的内存存放方向---大端模式与小端模式
- 单字节数据没有这个概念,因为只有一个字节
- 小端模式:高位字节放在高地址,低位字节放在低地址
- 大端模式:高位字节放在低地址,低位字节放在高地址
宏函数
- 比如#define MYADD(x, y) ((x) + (y))
- 由于宏函数没有普通函数调用的开销(函数压栈,跳转,返回等),因此对于频繁使用,并且比较短小的函数,一般使用宏函数替代。