Bootloader - jak to jest z tą sygnaturą?

0

Witam!

Od kilku dni bawię się w pisanie bootloaderów - o tak, dla zabawy. Dzisiaj porobiłem kilka eksperymentów i w związku z tym mam pytania.

Załóżmy że mamy następujący kod bootloadera, nic specjalnego, samo uruchomienie i tyle:

[BITS 16]  
[ORG 0x7C00] 

main:	  
jmp $	  
	     
times 510-($-$$) db 0
dw 0xAA55

Wszystko jest ok. Zacząłem eksperymentować z kodem, usunąłem na przykład sygnaturę 0xAA55, uruchomiłem i... o dziwo maszyna wirtualna nie wywaliła błędu co znaczy że bootloader został załadowany.

Dziwi mnie to trochę ponieważ jak mówi pewna strona,

Gdy znajdzie sektor odpowiednio zaznaczony: bajt nr 510 = 55h i bajt 511 = AAh (...), to wczytuje go pod adres bezwzględny
, bootloader ma zostać uruchomiony tylko i wyłącznie gdy znajdzie sygnaturę w 510 i 511 bajcie - w moim przypadku tego w ogóle nigdzie nie ma więc ciągle się zastanawiam - dlaczego BIOS ładuje bootloader mimo wszystko?

Obraz tworzony następującymi poleceniami: nasm bootloader.asm -f bin -o boot.bin && dd if=boot.bin bs=512 of=result.img count=1. Maszyna wirtualna postawiona na VirtualBoxie.

Pozdrawiam!

0

Nie każda maszyna wirtualna respektuje ten znacznik.
afair, także np.Bochs domyślnie go nie sprawdza.

0

Czyli jednak, miałem jakieś dziwne przeczucie że to o to chodzi - serdeczne dzięki!

1 użytkowników online, w tym zalogowanych: 0, gości: 1