Maybaygiare.org

Blog Network

Uitvoerbare

zie ook: objectbestand

uitvoerbare bestanden kunnen met de hand worden gecodeerd in machinetaal, hoewel het veel handiger is om software als broncode te ontwikkelen in een taal op hoog niveau die gemakkelijk te begrijpen is voor mensen. In sommige gevallen kan broncode in plaats daarvan in assembler worden opgegeven, wat voor mensen leesbaar blijft terwijl het nauw wordt geassocieerd met instructies voor machinecode.

de taal op hoog niveau wordt gecompileerd in een uitvoerbaar machinecodebestand of een niet-uitvoerbaar machinecodeobjectbestand van een soort; het gelijkwaardige proces op assembly taal broncode wordt assembly genoemd. Verschillende objectbestanden zijn gekoppeld om het uitvoerbare bestand aan te maken. Objectbestanden — uitvoerbaar of niet — worden meestal opgeslagen in een containerformaat, zoals uitvoerbaar en koppelbaar formaat (ELF) of Portable Executable (PE) dat specifiek is voor het besturingssysteem. Dit geeft structuur aan de gegenereerde machine code, bijvoorbeeld het verdelen in secties zoals .tekst (uitvoerbare code), .gegevens (geïnitialiseerde globale en statische variabelen), en.rodata (alleen-lezen gegevens, zoals constanten en strings).

uitvoerbare bestanden bevatten doorgaans ook een runtime-systeem, dat runtime-taalfuncties implementeert (zoals taakplanning, exception handling, het aanroepen van statische constructors en destructors, enz.) en interacties met het besturingssysteem, met name het doorgeven van argumenten, omgeving en het retourneren van een exit-status, samen met andere opstart-en shutdown-functies zoals het vrijgeven van bronnen zoals bestandshandvatten. Voor C wordt dit gedaan door te linken in het crt0 object, dat het werkelijke invoerpunt bevat en het instellen en afsluiten doet door de runtime bibliotheek aan te roepen.

uitvoerbare bestanden bevatten dus gewoonlijk aanzienlijke extra machinecode naast die direct gegenereerd uit de specifieke broncode. In sommige gevallen is het wenselijk om dit weg te laten, bijvoorbeeld voor de ontwikkeling van embedded systemen, of gewoon om te begrijpen hoe compilatie, koppelen en laden werken. In C kan dit gedaan worden door de gebruikelijke runtime weg te laten, en in plaats daarvan expliciet een linker script op te geven, dat het invoerpunt genereert en het opstarten en afsluiten afhandelt, zoals het aanroepen van main om de exit-status aan het einde van de kernel terug te geven.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.