Maybaygiare.org

Blog Network

Eksekverbar

Se også: objektfil

eksekverbare filer kan håndkodes på maskinsprog, selvom det er langt mere praktisk at udvikle programmer som kildekode på et sprog på højt niveau, der let kan forstås af mennesker. I nogle tilfælde kan kildekode specificeres i samlingssprog i stedet, som forbliver menneskelig læsbar, mens den er tæt forbundet med maskinkodeinstruktioner.

sproget på højt niveau er kompileret i enten en eksekverbar maskinkodefil eller en ikke-eksekverbar maskinkodeobjektfil af en slags; den tilsvarende proces på samlingssprog kildekode kaldes samling. Flere objektfiler er knyttet til at oprette den eksekverbare. Objektfiler-eksekverbare eller ej-gemmes typisk i et containerformat, såsom eksekverbart og Linkbart Format (ELF) eller bærbar eksekverbar (PE), som er Operativsystemspecifik. Dette giver struktur til den genererede maskinkode, for eksempel at opdele den i sektioner som f .eks.tekst (eksekverbar kode), .data (initialiserede globale og statiske variabler), og .rodata (skrivebeskyttede data, såsom konstanter og strenge).

eksekverbare filer inkluderer typisk også et runtime-system, der implementerer runtime-sprogfunktioner (såsom Opgaveplanlægning, undtagelseshåndtering, opkald af statiske konstruktører og destruktorer osv.) og interaktioner med operativsystemet, især passerende argumenter, miljø og returnering af en udgangsstatus sammen med andre start-og nedlukningsfunktioner såsom frigivelse af ressourcer som filhåndtag. For C gøres dette ved at linke i crt0-objektet, som indeholder det faktiske indgangspunkt og gør opsætning og nedlukning ved at ringe til runtime-biblioteket.

eksekverbare filer indeholder således normalt betydelig yderligere maskinkode ud over den, der direkte genereres fra den specifikke kildekode. I nogle tilfælde er det ønskeligt at udelade dette, for eksempel til udvikling af indlejrede systemer, eller blot for at forstå, hvordan kompilering, sammenkædning og indlæsning fungerer. I C kan dette gøres ved at udelade den sædvanlige runtime og i stedet eksplicit specificere et linkerscript, der genererer indgangspunktet og håndterer opstart og nedlukning, såsom at kalde main for at starte og returnere udgangsstatus til kernen i slutningen.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.