我試圖實現簡單的操作系統,現在必須實現內存管理。爲什麼我的內存檢查代碼不能正常工作
首先,我們輸入簡單的代碼來檢查內存大小如下。
我遇到的問題是這個函數的結果取決於增量大小。
如果我將增量設置爲1024,則此函數返回640Kb。
但是,如果我將增量設置爲1024 * 1024,則此函數返回120Mb。
(我的系統(bochs)的內存設置爲120MB。)
我檢查了優化選項和A20門。
任何知道爲什麼我的功能無法正常工作的人?
unsigned int memtest_sub(unsigned int start, unsigned int end)
{
unsigned int i;
unsigned int* ptr;
unsigned int orgValue;
const unsigned int testValue = 0xbfbfbfbf;
for (i = start; i <= end; i += 1024*1024) {
ptr = (unsigned int*) i;
orgValue = *ptr;
*ptr = testValue;
if (*ptr != testValue) {
break;
}
*ptr = orgValue;
}
return i;
}
不要探測內存。在實模式下使用BIOS(因爲它看起來像你在x86上)以獲得內存佈局。見int 15h。 – Macmade