
汇编语言中的进栈push,出栈pop,有什么作用呢?
汇编语言中的进栈push,出栈pop,有什么作用呢?我看到别人说是为了保护调用的子程序,不影响到寄存器,进栈的作用,是不是就是为寄存器的值在栈区里创建一个副本,让调用的子...
汇编语言中的进栈push,出栈pop,有什么作用呢?我看到别人说是为了保护调用的子程序,不影响到寄存器,进栈的作用,是不是就是为寄存器的值在栈区里创建一个副本,让调用的子程序修改的是栈区里的副本,而并不是修改或者影响寄存区本身,就像VB编程的参数传递的,按值传递和按地址传递?并且,如果我想让调用的子程序修改寄存器的值,是不是就不用压栈了?对于push,pop我看不明白,还望懂的高手用举例子的话帮我解释一下
展开
1个回答
展开全部
并不是这样,和你理解的恰恰相反
,
将寄存器的值进行压栈是为了保护在寄存器中的值。比方说
程序
在计算所得结果分别放在寄存器A和B中,这时程序调用
子程序
,子程序在编写过程中用到了A和B两个寄存器,如果直接调用子程序那么A和B中原有的计算值会被覆盖同时影响了程序和子程序的运算结果,这时需要
一个地方
用来保存原程序的结果就用到了栈
,
将寄存器的值进行压栈是为了保护在寄存器中的值。比方说
程序
在计算所得结果分别放在寄存器A和B中,这时程序调用
子程序
,子程序在编写过程中用到了A和B两个寄存器,如果直接调用子程序那么A和B中原有的计算值会被覆盖同时影响了程序和子程序的运算结果,这时需要
一个地方
用来保存原程序的结果就用到了栈
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询