Ontwikkelomgeving

Voor het opzetten van een ontwikkelomgeving waarmee je een OS kunt schrijven, zijn er een dingen nodig:

  • Een machine, bij voorkeur een virtuale machine (Bijv. VirtualBox)
  • Een assembler (FASM en/of NASM)

 

Dit is de basis maar om echt aan de gang te kunnen heb je nog meer tools nodig:

  • Compiler (Die OS onafhankelijke object bestanden kan maken of assembly)
  • Linker (Om de object bestanden om te zetten naar een binary)
  • Floppy/ISO Image Tools

 

Met enkel de machine en een assembler kom je al een heel eind. Zo kun je met de code op de eerste pagina omzetten naar een binary van 512 bytes. dit is net zo groot de bootsector. Dit bestand kunt je op een floppy instellen of direct bij een virtuele machine als floppy image opgeven, de meeste accepteren dit.

 

Assembly is niet voor iedereen weg gelegd, al ontkom je er niet aan bij het makenn van een OS. Daarvoor zijn compilers de uitkomst. Hiermee kun je je OS schrijven in talen als C/C++. Hiermee genereer je losse object bestanden, die samen met een kleine opstart code in assembly is samen te voegen met een linker tot 1 geheel uitvoerbaar bestand.

 

Welke tools te gebruiken

Welke tools je kunt gebruiken is OS afhankelijk, op Windows raad ik DJGPP compiler set aan. Dit omdat de meeste andere compiler omgevingen niet OS onafhankelijke objecten kunnen genereren en/of aan elkaar kunt linken. Helaas werkt deze alleen in Windows XP en eerder.

 

Op Linux is de GCC set instaat om alles te doen, maar dat moet je wel goed genoeg met Linux overweg kunnen dat je deze omgeving goed draaien krijgt. Iets wat mij niet gelukt is in Ubuntu.

 

Hoe pakte deze tools bij mij uit

De eerste versies van mijn OS waren gemaakt in assembly, en later met ondersteuning van C++. Toen ik mijn OS weer wou oppakken had inmiddels Windows 7 en kon ik de omgeving die werkte niet meer gebruiken. Na wat stoeien met verschillende opties heb ik toen toch besloten om opnieuw een start te maken met puur assembly.

 

Dit ging tot een zeker punt waarna ik het gemak van een hoger taal toch wel prettig vond, al had het ook zijn gebreken. Vandaar dat ik toen begonnen was met een eigen compiler die een op C gebaseerde taal kon omzetten naar assembly. Dit programma had ik voor 90% af en toen liep ik tegen een structuele ontwerp fout. Dit is het punt waar de ontwikkeling is gestopt.