现在好像整天都在找 Bug。。。
主要是因为目前的工作基本是把以前我在 Lingix 中写的代码移植到 ANOS 中来。
所以今天就解决一个那时遗留下来的 Bug 当时的一个 ??? 注释:
Lingix/driver/keyboard.c 的 kbd_getkeyqueue() 函数。
究其原因,是因为编译时使用了优化,一般优化和 inline 内嵌函数优化一起造成的。
而让优化器做出错误优化的原因是 keyboard.c 是中断服务程序。
中断服务程序中使用的变量会被随时(因为中断触发)而改变值。
而优化器认为这些值在已知程序段不会改变,直接优化掉了一些比较跳转操作。
这些关键的比较跳转没有了后,形成了一个死循环。
要解决这个问题,就应该使用 C 关键字 volatile 来声明这些变量,告诉编译器(优化器)这些变量会因为外部因素(中断调用时)而改变,对其优化有限制。
这样,优化器就不会优化掉那些比较跳转,而是老老实实的一一执行。
死循环也就不会产生。Bug 也随之而去。。。
这是我有史以来遇到的最恐怖的 Bug: 我把正在执行的代码给擦掉了~~~
系统中断服务表 IDT 需要 2K 空间,不想在程序中定义,就想着直接使用空余的内存空间。鬼使神差的想到 BOOT(7C00h)和内核代码(8000h)之间还有一段空区,就用上了。根本不注意到这段空区(7E00h – 7FFFh) 和 BOOT 一样只有 512 (0.5K) 字节。于是等我傻里傻气的清零 2K 的内存时,内核代码被清零了(7E00h + 2K > 8000h),包括正在执行这段清零操作的代码。QEMU 模拟器报错,弹出对话框来。天啊,不晓得在真是机器上执行会怎样,幸好有模拟器,庆幸!
昨天一晚上都牵挂着浅浅 x_x ,没有心思研究为什么有怎么严重的出错。后来便放弃了清零操作,只是对 INTEL 保留异常向量表进行处理,也就是 0 – 31 号的 256 个字节。呵呵。这样子没有影响到内核的代码,于是乎,发布了 ANOS 0.03 赶着好安心睡觉。
奇怪的是,早晨醒来时,不知为什么想起这个来。突然一下明白 7E00h 到 7FFFh 根本不到 2K 空间。。。
😀 真的是真的是很恐怖的错误!
好不容易休息一天,怕烦人没有挂 QQ,就挂了 TM 那个工作号,然后顺便挂上网易泡泡和 MSN。
(更多…)
关于 ANOS 请访问:http://larryli.51.net/anos 谢谢关心!
(更多…)
添加 ANOS 全局定义(anos.h)
添加基本支持 C 库(misc.c,misc.h)
添加硬件基本输入输出操作(io.h)
添加 VGA 03h 80×25 16 色字符模式显示(vga.c,vga.h)
本来做了很多东西,后来还是裁剪掉,发布这个简单的更新。
http://gro.clinux.org/frs/download.php/966/anos.0.02.tgz
完成 ANOS 然后做一个 U 盘小型便携式图形 OS 或者写一个模拟器、编译器合一的虚拟 OS。同时全面融入 ReactOS China 建设!!!!
http://www.anandtech.com/news/shownews.aspx?i=23767
ReactOS lands next year – thats the open source version of Windows 2000. Maybe that will stop all the whining From Microsoft. 2004 was the year Firefox finally broke through, 2005 will be the year of ReactOS.
很喜欢这句话,祝福 ReactOS 祝福 China 希望有一天可以说“可怜的 M$!”。
🙂 嘿嘿,真的很好。偶是这次先进性教育的直接受益者。哈哈。
小舅舅、舅妈来汉,晚上一起吃饭。正值新闻联播时间,两会正热。弟弟就问小舅妈,下面的政协开会没。小舅妈说,去年底就开了。当了十几年的政协代表,开会就那么回事。然后自然扯到当前正如火如荼的保持共产员先进性学习活动(新闻联播也正放着,呵呵)。小舅妈就说弟弟,你不是休假回家,现在不在部队里天天搞学习、写心得体会。我吃饭吃的笑了起来,说,这个学习真好,我们老板天天在公司学习在,一个星期多没到库里来了。妈妈接口道,难怪你这段时间下班回家没有叫这怨那了。我哈哈大笑,说,他们不来仓库指东划西蛮好,大家都安生。
真是托保持党员先进性学习的福。愿学习越长久越好,让教育来的更猛烈一些吧~~~
😀 😀 😀 😀 😀 哈哈哈哈哈~~~
完成软盘映象制作(fdmake.c)
完成启动代码(boot.asm),进入保护模式(start.asm),C 程序链接(main.c)。
最简单的一个东东终于做出来了,有什么意见和建议直接与我联系。
http://gro.clinux.org/frs/download.php/957/anos.0.01.tgz