深入理解计算机系统之程序的机器级表示(二)

过程调用

过程提供了一种封装代码的方式,用一组指定的参数和一个可选的返回值实现某种功能。形式有函数、方法、子例程等。

C 语言使用栈提供的后进先出的内存管理原则。栈和程序寄存器存放着传递控制和数据、分配内存需要的信息。

当 Q 执行时,P 及 P 以上的函数调研暂时被挂起,需要为局部变量分配存储空间,或者设置另一个过程调用。当 Q 返回时,它分配的局部存储空间都会被释放。P 的返回地址也被压入栈中,表示在 Q 返回时,从 P 的返回地址继续执行。

大多数过程间数据传送通过寄存器实现,寄存器最多传递 6 个整型参数,超过 6 个的部分要通过栈来传递。

深入理解计算机系统之程序的机器级表示(二)_第1张图片
栈帧结构

程序控制

处理器通过流水线获得高性能,在流水线中,一条指令要经过一系列的阶段,每个阶段执行所需操作的一小部分。通过重叠连续指令的步骤来获得高性能。

当机器遇到条件跳转时,只有当分支条件求值完成之后,才能决定分支的走向。处理器通过分支预测逻辑来猜测每条指令是否会执行。错误预测一个跳转处理器要求它丢掉为该跳转指令后所有的已做工作,然后从正确位置起始的指令去填充流水线。

你可能感兴趣的:(深入理解计算机系统之程序的机器级表示(二))