鱼C论坛

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

汇编语言的pop指令

[复制链接]
发表于 2012-10-24 21:24:14 | 显示全部楼层 |阅读模式

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

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

x
   既然pop指令的操作数不能是CS,那么iret返回指令CS和IP是如何弹出的??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-10-24 22:08:37 | 显示全部楼层
iret???是不是call和 ret我也是菜鸟
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-10-25 12:30:23 | 显示全部楼层
首先,pop cs不是80386中的指令,这是正确的。
iret只是一个操作,它的本质是物理的.
它相当于执行
pop IP
pop CS
popf
恢复了IP,CS,flag中的值。
但可惜的是,没有pop CS这个指令,它只是相当于这样子的操作。

你问这个问题本质上出自是逻辑上的概念混淆。
iret实现了这些,它是靠CPU内部机制的,CPU内部是物理的,它可以实现这些,CPU只要将先将栈顶的值放入IP,然后将栈顶第二个位置的值放入CS,再将栈顶第三个位置的值放入flag中。再把sp加上3就OK了。
这些为什么一定要用pop cs呢?

小猪把门窗关掉了,但大灰狼可以从烟囱里爬进去。
小猪死前还问:大灰狼不可能进来的啊,他不能从门里进来!
大灰狼说:不,兄弟,世界是物理的,我可以从烟囱里进来,你把概念中的世界当作真实的世界了,这就是马克思主义所谓的形而上学!

所以,你想想,没有这个操作和CPU不能执行这个是两个概念!

========并按=====
栈的设计是为了进行函数调用 ,在早期的指令集中是有pop cs这个指令的。但80386中将其拿掉了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-18 12:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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