Ontwerp en bouw een besturingssysteem/Hallo wereld/Tekst weergeven: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Vangelis (overleg | bijdragen)
sub
Koeienking (overleg | bijdragen)
Geen bewerkingssamenvatting
Regel 25:
}}
 
Deze functie zal moeten worden aangeroepen vanuit de assemblercode. Hoewel er verschillende mogelijke afspraken zijn over hoe C functies worden aangeroepen, is de standaard ''calling convention'' om de argumenten (TODO: ?van rechts naar links?) op de stack te pushen, en dan met <tt>call</tt> de functie aan te roepen. We hebben op dit moment nog geen argumenten voor de <tt>kernelmain()</tt> functie, maar hij moet nog wel aangeroepen worden. Om de functie succesvol te kunnen aanroepen moet aangegeven worden dat het symbool <tt>kernelmain</tt> (dat in <tt>init.c</tt> is gedefinieerd) buiten het assembler bestand is gedefinieerd, door middel van <tt>extern</tt>. PasDaarom daarommoet je <tt>start.asm</tt> alsaanpassen. Ergens in je document staat <tt>global start</tt>. Dat, tot en met <tt>jmp $</tt> moet volgtje aanvervangen:
 
{{Code|Titel='''start.asm''' (gedeelte)|Code=<source lang="asm">
...
Regel 54 ⟶ 55:
ld -T link.ld -o kernel.bin start.o init.o
</pre>
 
Vervolgens kopieert u <tt>kernel.bin</tt> naar de <tt>cdimage map</tt> en maakt u van het geheel een iso.
 
Als het goed is verloopt het assembleren, compileren en linken zonder (fout)meldingen.
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.