2015-04-19 4 views
1

Для изучения самонастройку операционных систем я несколько простых тестов, таким образом:Какую среду я могу использовать для записи двоичного кода операционной системы?

  • Я установить оракул viratualbox и создать Hdd диска

  • я установить гекс-редактор HxD и писать код для этого ГНБ диска, открыть файл, который представляет этот винчестер

в конце первого 512-байтового сектора я пишу 55 AA в 1FE и 1FF байт consiquently,

и другой код Я пишу с первого байта первого сектора.

Таким образом, я должен разблокировать hdd-файл из HxD, потому что виртуальный бокс не может запустить его, пока это не будет выполнено.

Я хочу использовать виртуальную машину или другую реальную машину (второй способ менее удобен), поскольку он создает независимую среду разработки.

Как я могу более эффективно выполнять эти тесты для обучения начальной загрузке (и после простой разработки) операционной системы?

ответ

4

Когда я делаю такую ​​разработку, я создаю образ диска с нуля и указываю на него виртуальную дискету как гибкий диск. Таким образом, выход вашего ассемблера, объектного файла, может быть полным загрузочным сектором для гибкого диска, и вы можете легко нагрузить дополнительные сектора. Например:

; x86 architecture systems all support MBR style boot sectors. An 
; MBR boot sector must be 512 bytes in length and have machine 
; language code originating at 0000:7c00. Additionally, it must 
; have the signature "0x55aa" as the final word in the sector or it 
; is not a valid boot sector. 



org 0x7c00     ; BIOS will load the MBR to this location 
          ; and then jump here to continue execution 

; Your code here! 

          ; As stated above, the boot sector must 
times 510-($-$$) db 0  ; Create padding to fill out to 510 bytes 
dw  0xaa55    ; Magic number in the trailer of a boot sector 
          ; We write it as 0xaa55 because we're little 
          ; endian and it will be reversed to the required 
          ; 0x55 0xaa 

Просто добавьте свой первоначальный код. Создайте ссылку на объектный файл с именем «floppy.img» или что-то в этом роде, а затем скажите VirtualBox, где его найти. Вуаля!

Вы не спрашивали, но я надеюсь, что вы можете увидеть, что вы можете поместить весь свой код в этот файл; просто добавьте код, который будет загружен цепочкой из последующих секторов после 0xaa55, и вы можете просто загрузить его в память, потому что знаете, что он попадает в начало следующего сектора.

+0

большое спасибо, я попробую свой путь – jah

+0

Если вы столкнулись с проблемой, дайте мне знать. Я могу, конечно, опубликовать больше кода примера для этого. Тем не менее, я не хотел отвлекаться от вашей забавы. :) –

+0

Ох, большое спасибо, теперь я постараюсь напечатать «Привет, мир» на экране в начале mbr, я глубоко начинаю и теперь использую hiew32 для преобразования ассемблера в двоичный файл :) – jah