Tak z ciekawości jeszcze postanowiłem popatrzyć na twój "kernel". Od razu się przyznaje, jestem za leniwy aby go bootować, ale skoro robi tylko tyle więc po przejechaniu go objdumpem powinno być od razu widać co i jak :)
No to zaczynamy. Na początek jak wyglądają sekcje w pliku:
milyges@colossus ~/tmp4 $ objdump -h kernel.bin
kernel.bin: file format elf32-i386
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000000f6 00100000 00100000 00001000 2**4
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .bss 00004000 00101000 00101000 00002000 2**2
ALLOC
...
Pierwsze co się rzucza w oczy, co tam może zajmować aż 0x4000 bajtów w sekcji .bss, objdump oraz readelf i mamy:
00100026 <start>:
100026: bc 00 50 10 00 mov $0x105000,%esp
26: 00101000 0 NOTYPE LOCAL DEFAULT 2 stack
Ok czyli jest to stos kernela, ale po co aż taki duży? Normalnie przy pisaniu OSa nie udało mi się zapełnić 4kB. Patrzę w tutorial, o tutaj też 0x4000. No ale to jeszcze nie świadczy o niczym. Jedziemy dalej. Czas na analizę kodu. Po przejechaniu kernela przez objdump -S widzimy praktycznie całkowitą zgodność kodu kernel z tutorialem. Jedyną zauważalną zmianą jest zmiana nazwy głównej funkcji z main na kernel_main (fajniej brzmi, prawda? ;)). Szkoda że kernel nie został skompilowany z -g było by mniej roboty, no ale nic, czas na ostatnią częśc: kernel_main. Z racji że nie potrafię na podstawie kodu w assemblerze odbudować kodu w D, wspomnę tylko o tym co zauważyłem:
Początek kernel_main
100058: 83 ec 10 sub $0x10,%esp
10005b: c7 45 f0 00 00 00 00 movl $0x0,-0x10(%ebp)
100062: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp)
100069: c7 45 f8 00 80 0b 00 movl $0xb8000,-0x8(%ebp)
100070: c7 45 ec 00 00 00 00 movl $0x0,-0x14(%ebp)
Widzimy tutaj alokację 16 bajtów na zmienne lokalne, 3 z nich zostają wyzerowane a jedna ma adres pamięci karty graficznej w trybie 80x25. Wygląda na to że ten fragment jest również z wyżej wymienionego tutoriala zapożyczony.
Oczywiście nie jestem w stanie jednoznacznie stwierdzić że ten kod przeklejony
Załączniki: Lista symboli, Kod kernela
Pisząc to nie chciałem ci podcinać skrzydeł, sam zaczynałem od modyfikacji kodów, ale żeby się brać za ten temat poważnie i szukać ludzi etc. trzeba IMO samemu coś pierwsze napisać ;)
A całego posta napisałem.... z nudów i chęci oderwania myśli od nadchodzącej sesji ;)
Pozdrawiam i życzę sukcesów z twoim OSem (na swój niestety ostatnio brak mi czasu).