Maybaygiare.org

Blog Network

Executable

Se også: Object file

Kjørbare filer kan hånd-kodet i maskin språk, selv om det er langt mer praktisk å utvikle programvare som kildekode i et høyt nivå språk som lett kan forstås av mennesker. I noen tilfeller kan kildekoden bli spesifisert i assembly i stedet, som forblir menneskelig lesbar mens den er nært forbundet med maskinkodeinstruksjoner.

språket på høyt nivå er kompilert i enten en kjørbar maskinkodefil eller en ikke-kjørbar maskinkodeobjektfil av noe slag; den tilsvarende prosessen på assembly language kildekoden kalles assembly. Flere objektfiler er knyttet til å opprette kjørbar. Objektfiler-kjørbare eller ikke-lagres vanligvis i et containerformat, For Eksempel Kjørbart Og Koblingsbart Format (ELF) eller Bærbar Kjørbart (PE) som Er Operativsystemspesifikt. Dette gir struktur til den genererte maskinkoden, for eksempel a dele den i seksjoner som .tekst (kjørbar kode),.data (initialiserte globale og statiske variabler), og .rodata (skrivebeskyttet data, for eksempel konstanter og strenger).Kjørbare filer inkluderer vanligvis også et runtime system, som implementerer runtime språkfunksjoner (for eksempel oppgaveplanlegging, unntakshåndtering, ringer statiske konstruktører og destructors, etc.) og interaksjoner med operativsystemet, spesielt passerer argumenter, miljø, og returnere en exit status, sammen med andre oppstart og avslutning funksjoner som slippe ressurser som filhåndtak. For C gjøres dette ved å koble i crt0-objektet, som inneholder det faktiske inngangspunktet og gjør oppsett og nedleggelse ved å ringe kjøretidsbiblioteket.

Kjørbare filer inneholder normalt betydelig ekstra maskinkode utover det som direkte genereres fra den spesifikke kildekoden. I noen tilfeller er det ønskelig å utelate dette, for eksempel for innebygd systemutvikling, eller bare å forstå hvordan kompilering, kobling og lasting fungerer. I C kan dette gjøres ved å utelate den vanlige kjøretiden, og i stedet eksplisitt angi et linkerskript, som genererer inngangspunktet og håndterer oppstart og avslutning, for eksempel å ringe main for å starte og returnere utgangsstatus til kjernen på slutten.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.