我修改了,中断描述符表的第36号,使他指向我的中断处理例程,DPL为3,我的中断例程里面就只有一条指令 iret。我的应用程序如下int main(){_asm int 36ret 0;}softice观察,进到了我的中断例程,可是执行iret的时候,protection fau...
全文
回复(6) 2002-06-27 10:36 来自版块 - 内核编程
表情
yanghuipjf兄说的不错,很多汇编器将iret和iretd统一用iret表示,具体是16位操作数还是32位操作数,看当时的运行环境,诸如是实模式还是保护模式,是从v86模式返回还是返回到v86模式,有无进行任务的切换等等,详细说明可以看看intel的软件开发手册第二卷,对于你这种情况,应...(2002-06-27 16:03)
pjf很多编译/汇编器在32为环境将IRET译码成16的兼容形式(即加上了操作数前缀),因而要写为对应的IRETD(就是32环境的IRET)(2002-06-27 12:59)
Nouk你的IRET生成的机器码是什么?不会是66 CF吧?呵呵 IRETD 改了再说,还不对的话就要看看你前面是不是把stack搞乱了。 What is IRETD?? Thx(2002-06-27 12:55)
ysy好了,果真如此!(2002-06-27 11:16)
ysy我看看!(2002-06-27 11:03)
pjf你的IRET生成的机器码是什么?不会是66 CF吧?呵呵 IRETD 改了再说,还不对的话就要看看你前面是不是把stack搞乱了。(2002-06-27 10:42)

返回顶部