Hvad er et instruktionssæt?

click fraud protection

Enhver CPU er designet fra bunden til at understøtte et bestemt instruktionssæt. Et instruktionssæt er et sæt hårdkodede operationer, som CPU'en kan udføre. Disse operationer kan for eksempel være at lægge to tal sammen, hoppe til en anden del af programmet eller sammenligne to værdier. Hver operation en computer kan udføre er unikt repræsenteret af en opcode.

Opkoder

Når et program udføres, bruger CPU'en en programtæller til at spore, hvilken instruktion der skal udføres næste gang. Når en instruktion hentes, øges programtælleren med længden af ​​instruktionen, så den peger på starten af ​​den næste instruktion. Hver instruktion består af en opkode. Afhængigt af instruktionen kan den indeholde operander eller ikke. Operander kan være en konstant værdi eller en pegepind til placeringen af ​​en værdi i CPU-registeret eller i systemets RAM.

Når den komplette instruktion er blevet hentet, skal den afkodes. Dette er den proces, hvor CPU'en adskiller opkoden og eventuelle operander. Den afkodede opkode bruges til at aktivere eller deaktivere specifikke elektriske veje i CPU'en, som vil resultere i den korrekte drift.

Når instruktionen er blevet afkodet, vil den blive udført. Den nøjagtige opførsel af CPU'en vil afhænge af operationen. En additionsoperation vil summere to værdier sammen. En hop-operation vil beregne, hvor i programmet man skal hoppe til. En sammenligningsoperation vil sammenligne to værdier. En NOP-operation vil være inaktiv, da NOP står for No Operation.

De fleste instruktioner vil derefter udsende resultatet af operationen. Denne udgang kan gå til processorregistrene og om nødvendigt til system-RAM. Hver af disse operationer tager en enkelt urcyklus at fuldføre.

Ulovlige opkoder

Hver CPU-arkitektur har sin specifikke liste over opkoder udgivet af producenten. Værdierne af disse opkoder er ikke nødvendigvis den samme cross-platform, hvorfor software skal kompileres til forskellige arkitekturer. I nogle tilfælde inkluderer producenten også udokumenterede opkoder. Disse omtales som "ulovlige opkoder." Ulovlige opkoder vil, selvom de er udokumenterede, udføre den samme funktion, hver gang de bliver kaldt. Som udokumenterede og ikke-standardfunktioner kan opdateringer til CPU-arkitekturen dog simpelthen fjerne dem.

Nogle tidlige computerspil på Apple II var afhængige af specifikke ulovlige opkoder. De fik derefter problemer med ydeevne og stabilitet på den senere Apple IIc CPU-revision, da IIc fjernede de ulovlige opkoder, som spillene krævede. Ulovlige opcodes blev også brugt i copyright-beskyttelseskredse som en sikkerhedsmetode gennem uklarhed i deres kamp mod pirater, der knækker deres indhold. Nogle ulovlige opkoder er simpelthen ment som fejlfindingsværktøjer og fejlbehandlere.

x86-instruktionssættet indeholder et stort antal udokumenterede ulovlige opkoder. Interessant nok er nogle af disse delt mellem Intel og AMD CPU'er, hvilket indikerer, at begge virksomheder er offentligt opmærksomme på deres formål, mens de er udokumenterede.

Kompilere og samling

De fleste programmer er skrevet på højt niveau sprog. Disse er relativt lette at læse, og de bruger ofte engelske ord eller stenografi for at minimere indlæringskurver. For at en computer kan udføre disse programmer, skal de kompileres. En compiler er dybest set en oversætter. Den tager koden på højt niveau og konverterer den til computerkode, instruktionerne som CPU'en kan forstå.

Det er også muligt, på nogle sprog, at køre ukompileret kode gennem et tidligere kompileret program, der genererer maskinkode på farten. Assembly er et programmeringssprog på lavt niveau, der bruger stenografi for at give udviklere direkte synlighed og kontrol over de udførte operationer. NOP er et eksempel på montagestenografi.

Konklusion

Et instruktionssæt er en liste over officielle funktioner, som en CPU-arkitektur kan køre. Det er en liste over operationer, der kan udføres. Disse operationer er hårdkodet ind i CPU'en og kaldes ved hjælp af deres respektive opkoder.

Software bruger generelt en compiler til at oversætte fra menneskelæsbar højniveaukode til den maskinkode, som CPU'en kan læse. Nogle gange kan en CPU-arkitektur have udokumenterede opkoder, kaldet ulovlige opkoder. Ulovlige opkoder er teknisk set en del af instruktionssættet. De er dog muligvis ikke pålidelige tilgængelige i fremtidige platformsiterationer. Glem ikke at efterlade dine tanker i kommentarerne nedenfor.