Vad är en instruktionsuppsättning?

click fraud protection

Varje CPU är designad från grunden för att stödja en viss instruktionsuppsättning. En instruktionsuppsättning är en uppsättning hårdkodade operationer som CPU: n kan utföra. Dessa operationer kan till exempel vara att lägga ihop två tal, hoppa till en annan del av programmet eller jämföra två värden. Varje operation en dator kan utföra representeras unikt av en opkod.

Opkoder

När ett program körs använder CPU: n en programräknare för att spåra vilken instruktion som måste utföras härnäst. När en instruktion hämtas inkrementeras programräknaren med längden på instruktionen så att den pekar på början av nästa instruktion. Varje instruktion består av en opkod. Beroende på instruktionen kan den innehålla operander eller inte. Operander kan vara ett konstant värde eller en pekare till platsen för ett värde i CPU-registret eller i systemets RAM.

När den fullständiga instruktionen har hämtats måste den avkodas. Detta är processen där CPU: n separerar op-koden och eventuella operander. Den avkodade opkoden används för att aktivera eller inaktivera specifika elektriska vägar i CPU: n som kommer att resultera i korrekt funktion.

När instruktionen har avkodats kommer den att exekveras. Det exakta beteendet hos CPU: n beror på funktionen. En additionsoperation kommer att summera två värden. En hoppoperation beräknar var i programmet man ska hoppa till. En jämförelseoperation kommer att jämföra två värden. En NOP-operation kommer att vara inaktiv, eftersom NOP står för No Operation.

De flesta instruktioner kommer då att mata ut resultatet av operationen. Denna utgång kan gå till processorregistren och, om nödvändigt, till systemets RAM. Var och en av dessa operationer tar en enda klockcykel att slutföra.

Olagliga opkoder

Varje CPU-arkitektur har sin specifika lista över opkoder publicerade av tillverkaren. Värdena för dessa opkoder är inte nödvändigtvis samma plattformsoberoende, vilket är anledningen till att programvara måste kompileras för olika arkitekturer. I vissa fall inkluderar tillverkaren även odokumenterade opkoder. Dessa kallas "olagliga opkoder". Olagliga opkoder, även om de är odokumenterade, kommer att utföra samma funktion varje gång de anropas. Som odokumenterade och icke-standardiserade funktioner kan dock uppdateringar av CPU-arkitekturen helt enkelt ta bort dem.

Vissa tidiga datorspel på Apple II förlitade sig på specifika olagliga opcodes. De drabbades sedan av prestanda- och stabilitetsproblem på den senare Apple IIc CPU-revisionen eftersom IIc tog bort de olagliga opkoderna som spelen krävde. Olagliga opkoder användes också i upphovsrättsskyddade kretsar som en säkerhetsmetod genom otydlighet i deras kamp mot pirater som knäcker deras innehåll. Vissa olagliga opkoder är helt enkelt menade som felsökningsverktyg och felhanterare.

x86-instruktionsuppsättningen innehåller ett stort antal odokumenterade olagliga opkoder. Intressant nog delas några av dessa mellan Intel och AMD-processorer, vilket indikerar att båda företagen är offentligt medvetna om sitt syfte medan de är odokumenterade.

Kompilatorer och montering

De flesta program är skrivna på högnivåspråk. Dessa är relativt lätta att läsa och använder ofta engelska ord eller stenografi för att minimera inlärningskurvor. För att en dator ska kunna köra dessa program måste de kompileras. En kompilator är i grunden en översättare. Den tar högnivåkoden och konverterar den till datorkod, instruktionerna som CPU: n kan förstå.

Det är också möjligt, på vissa språk, att köra okompilerad kod genom ett tidigare kompilerat program som genererar maskinkod i farten. Assembly är ett programmeringsspråk på låg nivå som använder stenografi för att tillåta utvecklare direkt synlighet och kontroll över de operationer som utförs. NOP är ett exempel på monteringsstenografi.

Slutsats

En instruktionsuppsättning är en lista över officiella funktioner som en CPU-arkitektur kan köra. Det är en lista över operationer som kan utföras. Dessa operationer är hårdkodade i CPU: n och anropas med sina respektive opkoder.

Programvara använder vanligtvis en kompilator för att översätta från mänskligt läsbar högnivåkod till maskinkoden som CPU: n kan läsa. Ibland kan en CPU-arkitektur ha odokumenterade opcodes, kallade illegala opcodes. Olagliga opkoder är tekniskt sett en del av instruktionsuppsättningen. Men de kanske inte är tillförlitligt tillgängliga i framtida plattformsupprepningar. Glöm inte att lämna dina tankar i kommentarerna nedan.