标签:运行 一段 内存 size 子程序 参数 软件 程序 举例
通过上节课的学习,我们简单了解了32位汇编和16位汇编的一些区别.
并且我们把一段重复的代码,独立出来,单独调用.
需要用到这个功能的时候,用CALL指令跳转过去,执行完毕之后,用RET指令再跳回来.
从而可以避免写大量重复的代码,软件开发效率自然也就上来了.
这节课,我们来写一个三个任意整数相加的代码或者函数还有其他的说法叫做过程,子程序,都是指一个意思.
如果我们需要10个数字,甚至100个数字要相加的话,如何设计这个函数呢?
我们把所有的寄存器都用上,也不够用了.
很明显寄存器不够用了,还记得我之前总说的一句话吗?栈是临时中转站.
我们可以用栈来完成这个过程,不管是100个参数,还是10个参数,都是一个道理.
所以,我们用5个数相加来举例子.
Windows32位程序中的,栈是程序运行的时候,操作系统给这个程序分配的内存.
一个程序中有多个函数.
每次用到一个函数的时候,都会用栈来做一些临时数据的中转.
所以,用的时候,得有节操.
既然是中转站,把事情做完了,就把自己临时放到之栈里面的东西也清理掉.
否则,中转站就爆炸了.
(栈溢出)
那么,如果栈里面的东西用完了,如何清理呢?
有两种常见的套路.
第一种套路是外平衡栈.
第二种套路是内平衡栈.
标签:运行 一段 内存 size 子程序 参数 软件 程序 举例
原文地址:http://www.cnblogs.com/xiaodaxiaonao/p/7341492.html