Нужна эмуляция защищённого 32-/64-битного режима под Windows XP, чтобы писать программу скажем на fasm`е под windows и сразу запускать на проверку. в случае ошибки, чтобы не висло ничего и не перезагружалось. собственно для этого и нужен эмулятор. скачал Bochs, но.... разобраться не смог. документация объёмистая больно уж. так вот, может есть что нибудь попроще, если такое в принципе возможно в этой области. ведь с эмулятором гораздо проще практиковаться в защищённом режиме. :-(
Не понял. На какой машине эмулировать будешь? И что именно? Игры с голым железом или под WinXP (32/64)? Если второе, то ставь VMWare на 64битном проце на любой из систем, ставь внутрь VMWare другую систему и вперёд.
"Не понял. На какой машине эмулировать будешь?" Athlon XP "Что именно?" мне нужна эмуляция голой системы ну или хотя бы под ms-dos 6.22, так, как будто бы я с дискеты загрузился на которой ms-dos. только будучи под windows, для экономии времени в случае зависания программы. ну и чтобы было доступно 0-вое кольцо привилегий естественно. то есть как бы виртуальный процессор что-ли. я как-то криво изъясняюсь. а нужно это для перехода в 32/64-битный защ.реж.
И все-таки стоит разобраться с Bochs. Судя по всему, ты хочешь пописАть в защищенном режиме, а значит тебе рано или поздно понадобится Bochs -- у него есть неплохие возможности отладки. Либо придется писать свой отладчик. Так что, возможно, есть смысл "день потерять, потом за 5 минут долететь"? Не так уж страшен этот Bochs .
Да, скачал я уже Bochs, установил, но наверное нужно делать образ загрузчика, либо образ диска с MS-DOS, только я не знаю пока где это искать
Скачал дистрибутив MS-DOS 6.22, теперь я полагаю её надо установить в свободный раздел. у меня есть такой, потом видимо сделать образ какой-нибудь программой понимающей IMG. только вот скачал я одну такую, а она пишет что неправильный формат. видимо img несколько видов
Это зависит от того, что ты хочешь загрузить. Bochs эмулирует загрузку компа с самого начала -- т.е. читает сектор 0 (LBA) в память по линейному адресу 0х7С00 и передает туда управление. Т.е. в принципе, ты можешь сделать свою MBR, можешь взять готовую и подправить. BIOS Bochs проверяет сигнатуру MBR (0x55aa) и останавливает выполнение (hlt), если не находит. Так что надо о ней позаботиться. Образ, если поставишь ata0-master: ..., mode=flat будет "линейный", т.е. первый сектор в файле соответствтует первому сектору "винчестера" и т.д. translation= выбираешь по вкусу, но самое простое -- LBA. Размер образа может не совпадать с указанным в конфиге -- Bochs при этом поднимет панику, которую можно проигнорировать и выполнение успешно продолжится. Т.е. образ, в принципе, можно сделать так (FASM): Код (Text): use16 org 0x7c00 ;Если надо xor ax, ax mov ds, ax ... db сколько_там_осталось dup 0xFF dw 0xAA55 Дальше уже по твоему усмотрению. Правда, 64 бита Bochs не поддерживает...
Написано, что поддерживает x86-64, вроде бы. В файле истории написано - amd64 fixes. Значит поддерживает. Ладно спасибо, попробую разобраться в этом.
я немного изменил код, он стал теперь всегда 512 байт, ведь загрузчик не может быть больше кажется одного сектора. тьфу. надо почитать на эту тему чего нибудь снова, а то давно читал и позабыл уже всё use16 org 0x7c00 ;Если надо entry16: xor ax, ax mov ds, ax ... boot_size=$-entry16 db (510)-boot_size dup 0xFF dw 0xAA55
Да, MBR всегда один сектор, всегда в "начале" -- так что никакие трансляции на нее не действуют. Почитать об этом можно тут: http://mossywell.com/boot-sequence -- подробно и понятно . boot_size = $ - entry16 db (510) - boot_size dup 0xFF Ааа, вот как это сделать можно...
Страница не открывается. А кто подкинет вариант конфига Bochs загружающегося с образа дискеты или харда. Хочеться посмотреть. Спасибо заранее. Тема будет полезна не только мне, но и другим. Я пробовал менять конфиг, но ничего не получалось, не разобрался до конца.
Прошу прощенья, надо так: http://www.mossywell.com/boot-sequence Ок, выложу свой конфиг. Только я что-то не пойму, как в новом интерфейсе файлы цеплять? Или скажи почту .
Ой, не заметил... Конфиг: ОЗУ: 32 FDD: отключен АТА: 1 включен, плоский, без трансляции. Правишь path="mbr.BIN" на то, что тебе надо.
Спасибо за информацию. Вообще я думаю стоит посвятить Bochs`у гораздо больше внимания на форуме! Ведь удобная и полезная вещь. Ещё раз спасибо.
У тебя хард на 30 Gb в конфиге ? ata0-master: type=disk, path="mbr.BIN", mode=flat, cylinders=3648, heads=255, spt=63
Хммм... Да . Не помню, почему именно выставил такие значения. В принципе, это не важно. Единственное, что надо учесть -- если используется какая-то трансляция (ECHS, AssistedLBA) надо вводить соответствующую геометрию, иначе чтения/записи int 0x13 будут промахиваться.
Ура, кое-что получилось, теперь он пишет что диск не загрузочный ))))) Урааа! Принял размер, я сделал его 1 мб. Прогресс уже. Теперь нужно дальше двигаться. Теперь нужно писать загрузчик простейший.
да я сразу знал в чём дело, это не проблема, образ то брался пустой. это я просто запустил на проверку. загрузчик маленький уже есть. он пишет - Loading Operating System Вот собссно и он: Код (Text): use16 org 0x7c00 start_label: xor ax, ax mov ds, ax mov ax,0x3 int 0x10 mov ax,0xb800 mov es,ax mov si,message_loading mov ah,7 xor di,di mov cx,80 @los: lodsb test al,al jz @1 stosw loop @los @1: in al,0x60 cmp al,1 jne @1 jmp @1 message_loading db 'Loading Operating System...',0 program_size=$-start_label rb 510-program_size dw 0xAA55 rb 1032192-513 db 00