第一次碰到Option Rom,我對使用記憶體第一個想法就是, 難道不能用Malloc這類的函式嗎? 答案是不行,因為在boot的階段是沒有C函式庫可以用的。因此要使用memory存放資料就必須透過EBDA所定義的規範從640KB內抓一快記憶體來用。
定義幾個欄位:
[40:13]: EBDA的起始位址, 單位是KB, 欄位是一個Word
[ [40:13] ] = EBDA的長度, 單位是KB, 欄位是一個Byte
[40:0E] = EBDA的起始segment, 欄位是一個Word
<範例> 申請 2KB的記憶體位址
step 1. 程式先去讀出以上這三個欄位的位址
- [40:13] = 27Ch (KB) = 9F000h
- [9F00:0] = 4
- [40:0E] = 9F00h
- [40:13] = 27Ch (KB) -2 = 27Ah (KB) = 9E800h
- [9E80:0] = 4+2= 6
- [40:0E] = 9E80h
沒有留言:
張貼留言