Windows 抛弃了 0x413 的内存规范,也抛弃了 int15/e820 关于常规内存保护这一部分的规范。
那么,其目的、原因是什么?
是不是因为,常规内存紧张,无法再容纳像 grub4dos 这样的仿真代码了?但仿真代码本来也就不多呀(12K左右)?连这么少的空间占用也不能容忍吗?总之,那是抛弃 DOS 规范。应该是故意的,而不是 Windows 开发者失误造成的。以这些开发者的水平,他们不至于犯如此低级的错误,他们是吃这碗饭的,不是扫大街的。
第二个问题:
抛弃规范以后,就剩下 EBDA 这一个规范了。那么,你觉得如下做法是否可行?其可行的概率有多大?
就是,把 EBDA 向下平移,腾出 12K 左右的空间,放入 grub4dos 的仿真代码。这样的话,期望 Windows 就不再破坏 grub4dos 的数据结构了。