我是模仿linux2.4的switch_to写的简单的任务调度程序,在qemu上运行;不过,我在timer_interrupt直接用schedule()调度。
这是fork的子程序的寄存器的值
下图堆栈分别是eip和cs
然后,执行iret指令后出现下图所示的结果
让我感到奇怪的是返回的eip是错误的,但是gdb打印的却是正确,我想请问下,我是漏了什么吗?
为什么会出那么奇怪的错误?
我是模仿linux2.4的switch_to写的简单的任务调度程序,在qemu上运行;不过,我在timer_interrupt直接用schedule()调度。
这是fork的子程序的寄存器的值
下图堆栈分别是eip和cs
然后,执行iret指令后出现下图所示的结果
让我感到奇怪的是返回的eip是错误的,但是gdb打印的却是正确,我想请问下,我是漏了什么吗?
为什么会出那么奇怪的错误?
1 回答1.2k 阅读✓ 已解决
3 回答874 阅读✓ 已解决
1 回答721 阅读✓ 已解决
1 回答1.5k 阅读
1 回答868 阅读✓ 已解决
2 回答654 阅读✓ 已解决
1 回答708 阅读