Movatterモバイル変換


[0]ホーム

URL:


Hoppa till innehållet
Wikipedia
Sök

Instruktionsuppsättning

Från Wikipedia
(Omdirigerad frånMaskininstruktion)
Den här artikelnbehöverkällhänvisningar för att kunnaverifieras.(2020-12)
Åtgärda genom att lägga till pålitliga källor (gärna som fotnoter). Uppgifter utan källhänvisning kanifrågasättas och tas bort utan att det behöver diskuteras pådiskussionssidan.
0-operandmaskin (stackmaskin)
1-operandmaskin (accumulator)
2-operandmaskin
3-operandmaskin
minne-till-minne-maskin

Eninstruktionsuppsättning ellerISA (frånengelskansInstruction Set Architecture) beskriver vilka tillgångar som finns tillgängliga förprogrammeringen av enprocessor. Bland annat beskrivs de instruktioner,register,adresseringslägen,minnesarkitektur ochinterrupthantering (avbrottshantering) som processorn stöder. Instruktionsuppsättningen definierar även processornsmaskinkod, dvs hur instruktionerna blir uttryckta som sekvenser avbinära ettor och nollor.

Instruktionsuppsättningar kan skilja sig mellan processorer inte bara på grund av vilka operationer som stöds, utan även hur hämtning och lagring av värden iarbetsminnet stöds (CISC kontraRISC).

Två olika processorer kan ha samma instruktionsuppsättning även om de internt har helt olikamikroarkitekturer, se till exempelIntelsPentium- ochAMD:sAthlon-processorer.

Instruktionstyper

[redigera |redigera wikitext]

Även om det är teoretiskt möjligt att konstruera en processor som endast har en slags instruktion, har de flesta vanliga processorer instruktioner av ett flertal olika typer.

Aritmetikinstruktioner

[redigera |redigera wikitext]

Aritmetikinstruktioner utför operationer påheltal. Bland operationerna räknasaddition,subtraktion, logiska operationer somAND,OR, ochXOR, aritmetisk och logiskskiftning, m.fl.Multiplikation ochdivision förekommer ofta, men inte alltid eftersom dessa operation kan utföras avalgoritmer som använder sig av enklare additions- och subtraktionsinstruktioner.

Flyttalsintruktioner

[redigera |redigera wikitext]

Flyttalsinstruktioner utför operationer påflyttal. Bland operationerna finns addition, subtraktion, multiplikation, division, stöd för konvertering mellan heltal och flyttal, samt ibland även mer avancerade operationer somkvadratrot,trigonometriska funktioner m.m.

Minnesinstruktioner

[redigera |redigera wikitext]

Vissa RISC-arkitekturer kan endast hämta och lagra värden i arbetsminnet genom särskilda minnesinstruktioner (ofta kalladeload ochstore).

Hopp- och greninstruktioner

[redigera |redigera wikitext]

Hoppinstruktioner tillåter programmet att ändrainstruktionssekvensens normalt linjära förlopp genom att ändra värdet påinstruktionspekaren.Greninstruktioner tillåter dessutom hopp som betingas av ett villkor (till exempel "utför hoppet endast om ett registervärde är lika med noll). Förgreningar/hopp kan bland annat ske vidIf-satser,loopar,goto-satser ochfunktionsanrop. Hoppinstruktioner är avgörande för programmering; utan dem går det inte att skrivaprogramslingor.

Anrops- och returinstruktioner

[redigera |redigera wikitext]

Anropsinstruktioner möjliggörabstraktion genom att tillåta anrop tillsubrutiner. Processorn lagrar en returadress (nästa instruktion) och börjar exekvera subrutinens instruktioner. När enreturinstruktion påträffas återställs den lagrade returadressen, varpå processorn fortsätter exekvera sekventiellt. Särskildasystemanropsinstruktioner anroparoperativsystemet å programmets vägnar för att utföra operativsystemspecifika funktioner som till exempel att läsa fråndatafiler eller visa text påbildskärmen.

Systeminstruktioner

[redigera |redigera wikitext]

Några av processorns instruktioner är endast avsedda att användas av operativsystemet; dessasysteminstruktioner är "skyddade" i det avseendet att om ett användarprogram försöker använda dem så avbryts programmet omedelbart av operativsystemet. Några processorarkitekturer (somIntel 8080 ochx86) har speciella in- och utenhetsinstruktioner som används för att kommunicera med kringutrustning; dessa är skyddade i moderna operativsystem för att förhindra att flera program orsakar konflikter genom att försöka använda sig av samma kringenhet samtidigt.

Operander

[redigera |redigera wikitext]

Beroende på processorns arkitektur kan en typisk instruktion specificera 0 eller flera explicitaadresser till de operander (argument) eller andraparametrar som används i operationen; här medräknas även adressen till den plats där resultatet lagras (i förekommande fall). Instruktionsuppsättningar kan kategoriseras alltefter hur många adresser instruktionerna använder som mest.

  • 0-adressmaskiner ellerstackmaskiner, använder sig av de översta få orden påstacken för att utföra sina beräkningar. Två heltal kan adderas med tre instruktioner:pusha,pushb,add.
  • 1-adressmaskiner eller ackumulatormaskiner var vanliga i datorålderns barndom. Varje instruktion hänvisar till maximalt en operand och resultatet placeras i processornsackumulatorregister:loada,addb,storec.
  • 2-adressmaskiner - både CISC och RISC har sådana instruktioner. En CISC-maskin (som till exempelIntel 8086) kan ladda två tal (från minnet), addera dem, och spara resultatet (i minnet) så här:loadr1,a;addr1,b;loadc,r1, därr1 är ettprocessorregister.
  • 3-adressmaskiner - oftast RISC-maskiner. Operander i 3-operandinstruktioner är nästan alltid processorregister, varför det krävs särskilda lagrings- och åtkomstinstruktioner för att hämta in värden i registren.

Operander kan vara av olika typer:

  • Omedelbara (immediate): konstanter som 3, -1 eller 0.
  • Register: syftar på ett av processorregistren, exempelvis R1, EAX.
  • Adressoperander: används i hopp-, gren-, och anropsinstruktioner för att ange den plats där processorn skall börja hämta sina instruktioner från.
  • Minnesoperander: anger en minnesadress från vilken data skall hämtas eller lagras. Minnesoperander kan i sin tur klassificeras ytterligare:
    • Direkta adresser anger en konstant adress, till exempel:mov eax,[31340000h] (x86-instruktion)
    • Indirekta adresser med offset anger adresser baserat på ett registervärde, till exempel:mov eax,[esi+12h]
Hämtad från ”https://sv.wikipedia.org/w/index.php?title=Instruktionsuppsättning&oldid=54628045#Instruktionstyper
Kategorier:
Dolda kategorier:

[8]ページ先頭

©2009-2025 Movatter.jp