4,436
社区成员
发帖
与我相关
我的任务
分享
jmp SelectorCode32:30000h
在保护模式下,当CPU在执行此指令时,首先,CPU会从SelectorCode32对应的GDT表中找到描述符,SelectorCode32叫做选择子,他代表了GDT中的一项,现在你的GDT中只有一项,除非SelectorCode32=0,否则,CPU肯定在GDT中找不到段描述符,就只能挂起了,接下来,即使你的SelectorCode32=0,那么CPU在GDT找到了第一个项,再来看你的 段描述符,首先,这是一个数据段,不是代码段,即使CPU加载了该段,也是没有执行权限的,也只能挂起,再一个,
你这个宏给的不全,我是看不到这个描述符描述的段的基地址的,我猜是TopOfStack,那就更不用说了,段的基地址是511,再加上个偏移,不知道跳到哪去了。
总结起来,
第一,SelectorCode32是不是0,如果不是0,那后面就不说了,肯定挂起,原因是CPU在GDT中找不到该选择子对应的描述符。
第二,如果SelectorCode32是0, 那么CPU肯定挂起,因为GDT中你只定义了一个数据段,并没有定义代码段,根本就没法加载该段到cs里
第三,没有第三。
[/quote]
总算遇到个专业的 了 .正准备开始重写~
我上面写的是为一个栈分配的GDT.不是当前使用的GDT..当前使用的GDT是另外一个.
我记得我是按照书上的来的 ,当前GDT的描述是弄得32位只读的.
不过你提到了挂起,挂起的现象是机器一直不动吗?
我当时换了几个地址跳转,有的跳转会导致进入grub.
还有,大神有QQ吗,,这个月正准备重新开始写呢~你给的那个网站是全英文的..表示压力大啊...
[/quote]
CPU挂起,就是停止工作了,如果你设置好了IDT,CPU出错会跳到对应的isr,如果没设置,有的模拟器会重启,有的就死机不动了。
mail:openfunix@gmail.com[/quote]
我记得我的前128项还是多少项IDT内都是一个函数,在屏幕上输出一个红色的I,后面就没写了.
但是CPU规定的异常处理函数应该只在IDT的前面吧?为什么有时候跳转就死机,有时候就进入grub了呢..
大神..那个OpenFunix是你自己写的吗?
我现在在写PE病毒,过几天开始重写操作系统~如果调试有问题能帮我看看程序吗?
还请多多指教啊~[/quote]
恩,是的,欢迎讨论。[/quote]
话说可以在真机上运行吗?[/quote]
不是所有的物理机都可以运行,得特定硬件才能,我写不了那么多的硬件驱动,时间和精力有限。未来可能会有!jmp SelectorCode32:30000h
在保护模式下,当CPU在执行此指令时,首先,CPU会从SelectorCode32对应的GDT表中找到描述符,SelectorCode32叫做选择子,他代表了GDT中的一项,现在你的GDT中只有一项,除非SelectorCode32=0,否则,CPU肯定在GDT中找不到段描述符,就只能挂起了,接下来,即使你的SelectorCode32=0,那么CPU在GDT找到了第一个项,再来看你的 段描述符,首先,这是一个数据段,不是代码段,即使CPU加载了该段,也是没有执行权限的,也只能挂起,再一个,
你这个宏给的不全,我是看不到这个描述符描述的段的基地址的,我猜是TopOfStack,那就更不用说了,段的基地址是511,再加上个偏移,不知道跳到哪去了。
总结起来,
第一,SelectorCode32是不是0,如果不是0,那后面就不说了,肯定挂起,原因是CPU在GDT中找不到该选择子对应的描述符。
第二,如果SelectorCode32是0, 那么CPU肯定挂起,因为GDT中你只定义了一个数据段,并没有定义代码段,根本就没法加载该段到cs里
第三,没有第三。
[/quote]
总算遇到个专业的 了 .正准备开始重写~
我上面写的是为一个栈分配的GDT.不是当前使用的GDT..当前使用的GDT是另外一个.
我记得我是按照书上的来的 ,当前GDT的描述是弄得32位只读的.
不过你提到了挂起,挂起的现象是机器一直不动吗?
我当时换了几个地址跳转,有的跳转会导致进入grub.
还有,大神有QQ吗,,这个月正准备重新开始写呢~你给的那个网站是全英文的..表示压力大啊...
[/quote]
CPU挂起,就是停止工作了,如果你设置好了IDT,CPU出错会跳到对应的isr,如果没设置,有的模拟器会重启,有的就死机不动了。
mail:openfunix@gmail.com[/quote]
我记得我的前128项还是多少项IDT内都是一个函数,在屏幕上输出一个红色的I,后面就没写了.
但是CPU规定的异常处理函数应该只在IDT的前面吧?为什么有时候跳转就死机,有时候就进入grub了呢..
大神..那个OpenFunix是你自己写的吗?
我现在在写PE病毒,过几天开始重写操作系统~如果调试有问题能帮我看看程序吗?
还请多多指教啊~[/quote]
恩,是的,欢迎讨论。[/quote]
话说可以在真机上运行吗?jmp SelectorCode32:30000h
在保护模式下,当CPU在执行此指令时,首先,CPU会从SelectorCode32对应的GDT表中找到描述符,SelectorCode32叫做选择子,他代表了GDT中的一项,现在你的GDT中只有一项,除非SelectorCode32=0,否则,CPU肯定在GDT中找不到段描述符,就只能挂起了,接下来,即使你的SelectorCode32=0,那么CPU在GDT找到了第一个项,再来看你的 段描述符,首先,这是一个数据段,不是代码段,即使CPU加载了该段,也是没有执行权限的,也只能挂起,再一个,
你这个宏给的不全,我是看不到这个描述符描述的段的基地址的,我猜是TopOfStack,那就更不用说了,段的基地址是511,再加上个偏移,不知道跳到哪去了。
总结起来,
第一,SelectorCode32是不是0,如果不是0,那后面就不说了,肯定挂起,原因是CPU在GDT中找不到该选择子对应的描述符。
第二,如果SelectorCode32是0, 那么CPU肯定挂起,因为GDT中你只定义了一个数据段,并没有定义代码段,根本就没法加载该段到cs里
第三,没有第三。
[/quote]
总算遇到个专业的 了 .正准备开始重写~
我上面写的是为一个栈分配的GDT.不是当前使用的GDT..当前使用的GDT是另外一个.
我记得我是按照书上的来的 ,当前GDT的描述是弄得32位只读的.
不过你提到了挂起,挂起的现象是机器一直不动吗?
我当时换了几个地址跳转,有的跳转会导致进入grub.
还有,大神有QQ吗,,这个月正准备重新开始写呢~你给的那个网站是全英文的..表示压力大啊...
[/quote]
CPU挂起,就是停止工作了,如果你设置好了IDT,CPU出错会跳到对应的isr,如果没设置,有的模拟器会重启,有的就死机不动了。
mail:openfunix@gmail.comjmp SelectorCode32:30000h
在保护模式下,当CPU在执行此指令时,首先,CPU会从SelectorCode32对应的GDT表中找到描述符,SelectorCode32叫做选择子,他代表了GDT中的一项,现在你的GDT中只有一项,除非SelectorCode32=0,否则,CPU肯定在GDT中找不到段描述符,就只能挂起了,接下来,即使你的SelectorCode32=0,那么CPU在GDT找到了第一个项,再来看你的 段描述符,首先,这是一个数据段,不是代码段,即使CPU加载了该段,也是没有执行权限的,也只能挂起,再一个,
你这个宏给的不全,我是看不到这个描述符描述的段的基地址的,我猜是TopOfStack,那就更不用说了,段的基地址是511,再加上个偏移,不知道跳到哪去了。
总结起来,
第一,SelectorCode32是不是0,如果不是0,那后面就不说了,肯定挂起,原因是CPU在GDT中找不到该选择子对应的描述符。
第二,如果SelectorCode32是0, 那么CPU肯定挂起,因为GDT中你只定义了一个数据段,并没有定义代码段,根本就没法加载该段到cs里
第三,没有第三。
[/quote]
总算遇到个专业的 了 .正准备开始重写~
我上面写的是为一个栈分配的GDT.不是当前使用的GDT..当前使用的GDT是另外一个.
我记得我是按照书上的来的 ,当前GDT的描述是弄得32位只读的.
不过你提到了挂起,挂起的现象是机器一直不动吗?
我当时换了几个地址跳转,有的跳转会导致进入grub.
还有,大神有QQ吗,,这个月正准备重新开始写呢~你给的那个网站是全英文的..表示压力大啊...
[/quote]
CPU挂起,就是停止工作了,如果你设置好了IDT,CPU出错会跳到对应的isr,如果没设置,有的模拟器会重启,有的就死机不动了。
mail:openfunix@gmail.com[/quote]
我记得我的前128项还是多少项IDT内都是一个函数,在屏幕上输出一个红色的I,后面就没写了.
但是CPU规定的异常处理函数应该只在IDT的前面吧?为什么有时候跳转就死机,有时候就进入grub了呢..
大神..那个OpenFunix是你自己写的吗?
我现在在写PE病毒,过几天开始重写操作系统~如果调试有问题能帮我看看程序吗?
还请多多指教啊~[/quote]
恩,是的,欢迎讨论。jmp SelectorCode32:30000h
在保护模式下,当CPU在执行此指令时,首先,CPU会从SelectorCode32对应的GDT表中找到描述符,SelectorCode32叫做选择子,他代表了GDT中的一项,现在你的GDT中只有一项,除非SelectorCode32=0,否则,CPU肯定在GDT中找不到段描述符,就只能挂起了,接下来,即使你的SelectorCode32=0,那么CPU在GDT找到了第一个项,再来看你的 段描述符,首先,这是一个数据段,不是代码段,即使CPU加载了该段,也是没有执行权限的,也只能挂起,再一个,
你这个宏给的不全,我是看不到这个描述符描述的段的基地址的,我猜是TopOfStack,那就更不用说了,段的基地址是511,再加上个偏移,不知道跳到哪去了。
总结起来,
第一,SelectorCode32是不是0,如果不是0,那后面就不说了,肯定挂起,原因是CPU在GDT中找不到该选择子对应的描述符。
第二,如果SelectorCode32是0, 那么CPU肯定挂起,因为GDT中你只定义了一个数据段,并没有定义代码段,根本就没法加载该段到cs里
第三,没有第三。
[/quote]
总算遇到个专业的 了 .正准备开始重写~
我上面写的是为一个栈分配的GDT.不是当前使用的GDT..当前使用的GDT是另外一个.
我记得我是按照书上的来的 ,当前GDT的描述是弄得32位只读的.
不过你提到了挂起,挂起的现象是机器一直不动吗?
我当时换了几个地址跳转,有的跳转会导致进入grub.
还有,大神有QQ吗,,这个月正准备重新开始写呢~你给的那个网站是全英文的..表示压力大啊...
[/quote]
CPU挂起,就是停止工作了,如果你设置好了IDT,CPU出错会跳到对应的isr,如果没设置,有的模拟器会重启,有的就死机不动了。
mail:openfunix@gmail.com[/quote]
我记得我的前128项还是多少项IDT内都是一个函数,在屏幕上输出一个红色的I,后面就没写了.
但是CPU规定的异常处理函数应该只在IDT的前面吧?为什么有时候跳转就死机,有时候就进入grub了呢..
大神..那个OpenFunix是你自己写的吗?
我现在在写PE病毒,过几天开始重写操作系统~如果调试有问题能帮我看看程序吗?
还请多多指教啊~jmp SelectorCode32:30000h
在保护模式下,当CPU在执行此指令时,首先,CPU会从SelectorCode32对应的GDT表中找到描述符,SelectorCode32叫做选择子,他代表了GDT中的一项,现在你的GDT中只有一项,除非SelectorCode32=0,否则,CPU肯定在GDT中找不到段描述符,就只能挂起了,接下来,即使你的SelectorCode32=0,那么CPU在GDT找到了第一个项,再来看你的 段描述符,首先,这是一个数据段,不是代码段,即使CPU加载了该段,也是没有执行权限的,也只能挂起,再一个,
你这个宏给的不全,我是看不到这个描述符描述的段的基地址的,我猜是TopOfStack,那就更不用说了,段的基地址是511,再加上个偏移,不知道跳到哪去了。
总结起来,
第一,SelectorCode32是不是0,如果不是0,那后面就不说了,肯定挂起,原因是CPU在GDT中找不到该选择子对应的描述符。
第二,如果SelectorCode32是0, 那么CPU肯定挂起,因为GDT中你只定义了一个数据段,并没有定义代码段,根本就没法加载该段到cs里
第三,没有第三。
[/quote]
总算遇到个专业的 了 .正准备开始重写~
我上面写的是为一个栈分配的GDT.不是当前使用的GDT..当前使用的GDT是另外一个.
我记得我是按照书上的来的 ,当前GDT的描述是弄得32位只读的.
不过你提到了挂起,挂起的现象是机器一直不动吗?
我当时换了几个地址跳转,有的跳转会导致进入grub.
还有,大神有QQ吗,,这个月正准备重新开始写呢~你给的那个网站是全英文的..表示压力大啊...
jmp SelectorCode32:30000h
在保护模式下,当CPU在执行此指令时,首先,CPU会从SelectorCode32对应的GDT表中找到描述符,SelectorCode32叫做选择子,他代表了GDT中的一项,现在你的GDT中只有一项,除非SelectorCode32=0,否则,CPU肯定在GDT中找不到段描述符,就只能挂起了,接下来,即使你的SelectorCode32=0,那么CPU在GDT找到了第一个项,再来看你的 段描述符,首先,这是一个数据段,不是代码段,即使CPU加载了该段,也是没有执行权限的,也只能挂起,再一个,
你这个宏给的不全,我是看不到这个描述符描述的段的基地址的,我猜是TopOfStack,那就更不用说了,段的基地址是511,再加上个偏移,不知道跳到哪去了。
总结起来,
第一,SelectorCode32是不是0,如果不是0,那后面就不说了,肯定挂起,原因是CPU在GDT中找不到该选择子对应的描述符。
第二,如果SelectorCode32是0, 那么CPU肯定挂起,因为GDT中你只定义了一个数据段,并没有定义代码段,根本就没法加载该段到cs里
第三,没有第三。