Mellomspråk

I datavitenskap er et mellomspråk (noen ganger forkortet IL , for engelsk mellomspråk ) språket til en abstrakt maskin designet for analyse av et dataprogram . Begrepet kommer fra dets bruk i kompilatorer , hvor en kompilator først transkriberer kildekoden til et program til et skjema som er mer egnet for kodeforbedringstransformasjoner, for eksempel en mellomtilstand før generering av objektkode eller kode. Maskinspråk for en målmaskin, dvs. maskinen som programmet skal kjøres på. Oppfatningen av et mellomspråk skiller seg typisk fra maskinspråket på tre grunnleggende måter:

Et populært format for mellomspråk er treadressekode .

En variasjon av betydningen av mellomspråk refererer til språk som brukes som mellomspråk av et høyt nivå språk som ikke genererer objektkode eller maskinkode, men bare genererer mellomspråket, for innlevering til en kompilator som sender ut kodeobjekt. eller maskinkode. Målet er å få en optimalisering eller bærbarhet , som beskrevet ovenfor, men ved anvendelse av et mellomspråk som kompilatorer for mange prosessorer og operativsystemer, slik som C . Språkene som brukes til dette formålet har en mellomliggende kompleksitet mellom språk på høyt nivå og språk på lavt nivå, for eksempel monteringsspråk.

Mellomliggende representasjon

I kompilering er mellomrepresentasjonen (eller mellomkoden ) til et dataprogram en datastruktur som representerer programmet inne i kompilatoren. Dette er et mellomtrinn mellom kildekoden og den binære koden . Den mellomliggende representasjonen genereres fra det abstrakte syntaksetreet . Den brukes for optimalisering fase med analysen av datastrømmen og kode reorganizations før kodegenerering .

Mellomliggende representasjon kan forkortes som IR (fra engelsk mellomrepresentasjon ). Navnet antyder at det meste av informasjonen som er tilstede i kildekoden, beholdes av den mellomliggende representasjonen med tilleggsdata eller muligheter for rask tilgang til informasjonen.

Språk

Mange programmeringsspråk bruker C som mellomspråk. Blant dem: Eiffel , Sather og Esterel . Vi designet varianter av C som bærbare monteringsspråk, inkludert flere språk kalt C-- , C Intermediate Language the Low Level Virtual Machine

Den Java Virtual Machine Språk er en mellomspråk som brukes av alle kompilatorer rettet mot Java virtuell maskin , før on-the-fly samling til maskinkode. Tilsvarende er Microsofts Common Intermediate Language et mellomspråk designet for å deles av alle kompilatorer av .NET Framework , før statisk eller dynamisk kompilering i maskinkode.

Den GNU Compiler Collection (gcc) bruker internt forskjellige mellomspråk for å forenkle bærbarhet og kryss-sammenstilling . Blant disse språkene:

Annen

Andre verktøy for kodeanalyse bruker en mellomrepresentasjon.

For eksempel er radare2 et verktøy for analyse og reversering av binære filer ved hjelp av mellomspråkene ESIL og REIL for å analysere binære filer.

Referanser

  1. "  Radare2 0.9.9 utgitt - nesten der  " , på linuxfr.org ,2015(åpnet 8. juni 2015 )

Se også