栈是现代化计算机不可或缺的设计元素
当初代计算机已经实现了单次计算和累加计算并能够实现正确的存取结果
我们开始了对于数据结构的思考
而更高的自动化的实现却需要数据结构的有力支撑
因而计算机底层的设计人员考虑到到一些常用的数据结构的实现需要一些固定的内存单元去存储
这样就规定出了一块独立的内存空间用于存储重复计算或者临时数值保存用途的空间
对于栈的定义中文描述较为概念化,我用一句英文解释作为描述示例
Stack is some space for data structures and some data serial.
它的结构刚刚好可以存储一些结构化的连续数据,以便于读取和写入的时候可以进行连续的操作
这样就可以按照内存单元的基本单位进行偏移的递增和递减
而不用再去关心结构化数据和其他临时性数据还有一些程序代码所存储的空间上的冲突和地址顺序的寻址障碍
我们可以视作栈的设计就是为了连续取址而设定的
当然我们也可以不需要设计栈的概念而自己独立定义出一部分内存地址作为连续性数据的存放空间
但是这样会大大增加程序员对于程序设计的难度
毕竟每种cpu的内存的规划方式都是不同的
这样每次都要让程序设计人员自己探索可划分出的数据区域的大小和位置以及是否使用
所以在汇编指令中就预先定义了栈的概念
在cpu设计之初也就预先为栈的使用留下了预定义好的段地址寄存器和指针偏移寄存器
以便于程序设计人员在后续的设计过程中可以把抽象化的寄存器配置变成实例化的配置
栈的设计大大的增加了程序的可用性
也同时增加了程序承载的计算的复杂型
栈空间的良好利用会让结构化的数据在处理的时候能够得到相对有规律性的指针偏移
栈的设计最大的好处就是可以随时随地复用程序设计