Common Intermediate Language
Common Intermediate Language (CIL), tidligere Microsoft Intermediate Language (MSIL) er det laveste niveau af menneskelig-læsbar programkode defineret i specifikationen af Common Language Infrastructure (CLI) og anvendes af .NET Framework og Mono. Programmeringssprog der er målrettet et CLS-kompatibelt kørselsmiljø kompileres til CIL, der samles til objektkode i et bytekode-lignende format. CIL er et objektorienteret assemblersprog og er fuldstændig stakbaseret. Dets bytekode fortolkes til maskinkode eller afvikles af en virtuel maskine.
CIL anvendes til oversættelse af programmeringssprogene C#, Visual C++, VB.NET og J# til et maskinkodelignende sprog, for anvendelse i et NET Framework.
Generel information
Under kompileringen af .NET-programmeringssprog, bliver kildekoden oversat til CIL-kode i stedet for platforms- eller processeror-specifik objektkode. CIL er et CPU- og platforms-uafhængigt instruktionssæt der kan udføres i ethvert miljø der understøtter Common Language Infrastructure, såsom .NET runtime på Windows, eller det platformsuafhængige Mono runtime. I teorien overflødiggør det nødvendigheden af forskellige udgivelser af eksekverbare filer til forskellige platforme og CPU-typer. CIL verificeres for sikkerhedsfejl under kørslen, hvilket giver øget stabilitet og pålidelighed sammenlignet med eksekverbare filer oversat direkte til maskinkode.
Afviklingsprocessen ser således ud:
- Kildekoden konverteres til Common Intermediate Language, der kan betragtes som CIL's ækvivalente til assemblersprog for en CPU.
- CIL bliver dernæst samlet til en form for bytekode og en .NET-assembly oprettes.
- Under kørslen af en .NET-assembly bliver dens kode sendt gennem .NET-runtimes JIT-kompiler hvor den oversættes til maskinkode. Det er også muligt at prekompilere koden, hvilket overflødiggør dette trin på bekostning af portabiliteten af den eksekverbare fil.
- Maskinkoden bliver afviklet af computerens processor.
Spire Denne it-artikel er en spire som bør udbygges. Du er velkommen til at hjælpe Wikipedia ved at udvide den. |