鱼C论坛

 找回密码
 立即注册
查看: 3840|回复: 2

调用子程序时为什么不用将标志寄存器的值入栈?

[复制链接]
发表于 2016-5-6 21:57:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 远山 于 2016-5-6 22:02 编辑

看到12章,因为在中断过程中要改变标志寄存器的值,所以cpu在中断过程中要首先将标志寄存器入栈,那么在调用子程序的时候呢,子程序中也可能改变标志寄存器的值不是吗,不需要将标志寄存器入栈吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-5-11 13:06:41 | 显示全部楼层
1、中断机制属于突发事件处理,这个突发事件在它发生之前,你根本就不知道它是什么,需要做什么样的处理
也就是说,会有很多很多各种各样的状况,这些状况可能影响你正在做的事情,也有可能不影响。所以最保险的做法是保存现场,即pushf操作(我这里说pushf操作,并不是说计算机会执行pushf指令,因为这种操作是计算机硬件完成的,不是靠pushf指令完成的)。
2、子程序调用属于一种在时间上和空间上(或叫地址上)可控的处理。子程序会否影响标志寄存器以及各种,这都是编程者需要事先处理好的(如果不处理好,则可能出现各种达不到原有目的的情况)。既然事先要做处理的,当然就不必PUSHF操作了,当然也可以人为进行这个操作,这也是pushf指令的作用。

不知是否正确,请多多指教。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-12 08:38:20 | 显示全部楼层
兰陵月 发表于 2016-5-11 13:06
1、中断机制属于突发事件处理,这个突发事件在它发生之前,你根本就不知道它是什么,需要做什么样的处理
...

让我理解理解先
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 09:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表