+ -
当前位置:首页 → 问答吧 → 汇编子程序中用作传递参数的寄存器需要进栈保存吗?

汇编子程序中用作传递参数的寄存器需要进栈保存吗?

时间:2011-11-28

来源:互联网

子程序中用到的一些寄存器通常是要在子程序开始的地方一个个push进栈保存的.
那麽对于那些用作参数传递的寄存器有没有必要也push进去呢?
还是看具体情况讨论?

举个具体例子,我在编程的时候发现寄存器(dx)要:
1)被用作给子程序传递参数
2)不需要用作给主程序传递返回值
3)但一开始给子程序传递参数的寄存器(dx)中的值仍在返回后继续被主程序使用

那么对于这种情况一般大家是怎么处理的呢?

作者: handmewc   发布时间: 2011-11-28

看你们自己的使用约定了。象这种用 dx 来传递参数,一般由子程来做保存和恢复的操作,如果子程需要使用到并修改 dx 的内容的话。主程来做,也不是不可以,只是可能不是所有的子程实例都会修改对 dx 进行保存恢复,这样就会显得多余。

作者: zara   发布时间: 2011-11-28

基本原则就是子程序中要用到的寄存器在调用前需要入栈保护,调用后恢复。

作者: masmaster   发布时间: 2011-11-28