Bochs源码分析 - 18:研究Bochs中iret指令的实现细节
发布时间
阅读量:
阅读量
前言
在上一篇文章中,我们对bochs如何模拟处理int指令所触发的中断事件进行了分析,但尚未探讨其返回机制的具体实现方式。本文将对此进行深入剖析。
尽管尚未查阅相关源代码,但我推测本文篇幅不会太长。昨晚因失眠至凌晨两点多,今早七点便起床,中午竟又无法入睡,整个人已疲惫不堪,希望尽快完成写作以便回家沐浴放松。
bochs-dbg调试定位分析
通过上一篇文章中提及的int指令向前跳转若干条指令后,即可直接观察到相关内容,无需借助IDA进行逆向分析,因为若要逆向lib32库则较为繁琐。

代码分析
其iret与int类似,在不同运行模式下所表现出的功能特性存在差异,因此在执行iret指令时,首先需要对当前CPU所处的模式进行判断。当处于保护模式时,iret指令将按照既定顺序完成出栈操作,并加载相应的段选择子,这些过程较为直观,此前的文章中我们已对相关细节进行了详细解析,此处不再赘述。
需要特别指出的是,无论是在trap中断还是interrupt中断的情况下,iret指令的执行流程似乎并无明显区别,在整个分析过程中并未发现针对二者进行区分的处理方式。后续
全部评论 (0)
还没有任何评论哟~
