Я создал загрузочный образ дискеты из примера, он должен:
- отключить все прерывания
- перезагружать
Однако, как только я запускаю его с бохами, он потребляет 100% процессора, пока я его не убью.
Вот образ дискеты:
$ hd floppy.img 00000000 fa f4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.| 00000200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00168000
Разобранный образ:
$ objdump -b binary -D floppy.img -m i386 floppy.img: file format binary Disassembly of section .data: 00000000 : 0: fa cli 1: f4 hlt ... 1fe: 55 push %ebp 1ff: aa stos %al,%es:(%edi)
вывод Bochs (pastebin).
bochsrc.txt:
romimage: file=/usr/share/bochs/BIOS-bochs-latest, address=0xe0000 vgaromimage: file=/usr/share/bochs/VGABIOS-lgpl-latest floppya: 1_44=floppy.img, status=inserted boot: a log: OSDev.log mouse: enabled=0 megs: 32 display_library: sdl
Я запускаю бох таким образом:
Однако, как только я запускаю его с бохами, он потребляет 100% процессора, пока я его не убью.
$ bochs -f bochsrc.txt
Версия Bochs: 2.4.6-4, работающая на Ubuntu 12.04 i686.
Что я делаю неправильно?
hlt
не перезагружается. Это не то, для чего это нужно. Он приостанавливает работу процессора до тех пор, пока не поступит прерывание, а поскольку вы отключили прерывания... - person Chris Jester-Young   schedule 01.09.2013hlt
для бездействия процессора. - person Chris Jester-Young   schedule 01.09.2013