前置知识

这里先对一些基础知识做一些简单说明,以方便后面阅读。

函数定义

计算机中的函数(有时也被称为过程或方法)提供了一种封装代码的方式,用一组指定的参数和可选的返回值实现了某种功能。然后可以在程序不同的地方调用这个函数。它通过从调用方接受一组参数用于函数执行,也可以向被调用方返回执行结果。

在进行函数调用时,计算机底层需要提供如下机制:

  • 控制转移

    需要把控制转移到被调用函数,然后当被调用函数执行完毕后再回到原来的位置继续执行。

  • 数据传递

    调用者可以向被调用者传递参数,同时被调用者也可以向调用者返回数据

  • 内存分配与释放

    在开始时,可能需要为被调用者分配局部内存来存储局部变量,在函数返回时必须对这些内存进行释放。

栈是一种数据结构,可以把它理解为一个容纳数据的容器,它具有先进后出(也等价于后进先出)的特性,也就是先进入的数据,最后才能出来。也可以把它想象成你桌面的一摞书,每次只能取最上面的一本书,新到来的书只能放在最上面。或者也可以把它想像成你身上的衣服,最先穿的衣服,最后才能脱掉。因此对于来说就有两个重要的操作即压栈(push)和出栈(pop)。压栈表示从栈的顶部新新增一条数据,出栈表示把栈顶部的数据取出来。栈这种数据结构具有记忆功能,也就是出栈的值永远是最近被压入且仍然在栈中的值。

内存

内存是计算机中一组连续的存储区域,这块区域被计算机组织成由无数个连续的以字节(8个二进制位)大小为单元的集合。并且为每个内存单元提供一个唯一的内存地址用于计算机方便对某个内存单元进行访问,也就是每个字节都会有一个内存地址。例如第一个字节的地址是0,和它挨着的第二个字节地址就是1,以此类推。我们把内存地址较大的一端称作高地址,内存地址较小的一端称作低地址

汇编指令

汇编语言是直接工作在机器之上的语言。计算机只能识别由0,1组成的二进制序列,所以CPU也只能执行由0,1所组成的机器指令。汇编语言是机器指令的助忆符,它可以方便人类辨别和记忆。每一条汇编指令会对应一条或多条机器指令。本文中会使用一种类似于C语言的伪代码来描述栈的变化过程。

寄存器

CPU的内部有一组存储器用来存放一些较小的临时数据,称这组存储器为寄存器,寄存器的访问速度比内存快很多,通过快速地访问数据来加速计算机程序的运行。CPU想要访问内存中的数据就必须把内存中的数据转移到寄存器中然后CPU再从寄存器中读取。寄存器位于存储器层次结构的最顶端,也是CPU可以读写的最快的存储器。每个寄存器有专门的名字,不同的寄存器用途也不一样。

results matching ""

    No results matching ""