滴水逆向三期-堆栈
内存和寄存器都是用来存储数据的,假设我们想临时存个数据,我们用,然后用完就不要了,如果存储的东西有点多的话,那么寄存器肯定是装不下的,解决方案就是用内存取存储这些数据,能够去记录存储多少数据,然后还能快速找到某个数据,假设一共有50个数据,我现在想用第X个,怎么才能快速的找到?
如图:
假设寄存器有个BASE底部 TOP顶部,内存连续存储,地址大小看自己设计,如果往上存储值的话,可以把top里存的值移动,移动到当前地址的编号,以此类推,这样设计的好处:目的是可以存储多个数据,可以存X个,可以记录多少个数据,中间各自的数量,TOP和BASE地址一减就是多少个了,快速找到数据,因为地址编号都是连着的,比如说我们的地址编号越往上越小(在windows里,堆栈时候是向低位扩展的)他会从大的地址往小的地址去存,从最低往上减就好(不看图)假设BASE - X 那么X就是偏移通过BASE和偏移的方式去找到这个值,还可以用TOP+X去找到这个值,所以我们通过这个结构来存储的话,我们可以解决很多临时的数据,能清晰的知道存储了多少个,而且还可以快速的找到某一个的值(两种方式)如果这些数据不想要了,那我们直接将TOP的值去加上X,然后回到这里,然后上面的