Maskinkode
![](http://upload.wikimedia.org/wikipedia/commons/thumb/c/c0/W65C816S_Machine_Code_Monitor.jpeg/250px-W65C816S_Machine_Code_Monitor.jpeg)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/33/Wikipedia_in_binary.svg/250px-Wikipedia_in_binary.svg.png)
Maskinkode eller «maskinspråk» er et sett med instruksjoner som blir utført direkte i datamaskinens prosessor (CPU). Hver instruksjon utfører en særskilt oppgave, eksempelvis aritmetisk operasjon på en enhet med data. Hvert dataprogram som direkte blir utført av CPU består av en slik rekke med instruksjoner.[1]
Numerisk maskinkode (ikke assemblerkode) kan bli forstått som representasjon på laveste nivå av et kompilert og/eller assemblerprogram, eller som et primitivt og maskinvareavhengig programmeringsspråk. Mens det er teoretisk mulig å skrive programmer direkte i numerisk maskinkode er det kjedsommelig og lett å gjøre feil å håndtere de enkelte bits og kalkulere numeriske adresser og konstanter manuelt. Det er derfor gjort svært sjelden i dag, unntatt for de situasjoner som krever ekstrem optimalisering eller debugging.
Bortimot alle praktiske programmer i dag er skrevet i et høynivåspråk eller i et assemblerspråk, og deretter oversatt til maskinkode av en kompilator. Programmer i et fortolket språk[2] er imidlertid ikke oversatt til maskinkode, skjønt deres fortolker består av utførbar maskinkode (generert fra assembler og/eller høynivåspråklig kildekode).
Hver prosessor eller prosessorfamilie har sitt eget særskilte instruksjonssett av maskinkode. Instruksjoner er mønstre av bits som ved sin fysiske design tilsvarer til ulike kommandoer til maskinen. Således er instruksjonssettet særskilt til en klasse av prosessorer som benytter samme maskinarkitektur.
Instruksjoner i maskinkode
Maskinspråk består bare av tallene 0 og 1. Prosessen med å oversette fra et programmeringsspråk til maskinkode kalles kompilering. Et typisk program som er skrevet i maskinspråk, kan se ut omtrent som dette:
0010 1010 0001 1101 0011 1100 1010 1111 0101 0110 1101 0101 1101 1111 0010 1001
Maskinkode er i utgangspunktet et meget enkelt språk. Det består for det meste av enkle instruksjoner som eksempelvis å lagre et tall i minnet, hente det frem igjen, legge det til et annet tall og lignende. En enkel sak som å konvertere alle bokstavene i en tekst til store bokstaver krever imidlertid hundrevis – om ikke tusenvis – av slike «små» instruksjoner. En maskin klarer å utføre alle disse instruksjonene i en imponerende hastighet, slik at antallet instruksjoner ikke nødvendigvis sier noe om hvor lang tid maskinen bruker på å utføre dem.
Referanser
Litteratur
- Hennessy, John L.; Patterson, David A. (2008): Computer Organization and Design. The Hardware/Software Interface. Morgan Kaufmann Publishers. ISBN 1-55860-281-X.
- Tanenbaum, Andrew S. (2012): Structured Computer Organization. Prentice Hall. ISBN 0-13-020435-8.
- Brookshear, J. Glenn (2014): Computer Science: An Overview. 12. utg. Addison Wesley. ISBN 0-321-38701-5.
Se også
Eksterne lenker
- Computer Organization and Design, nedlastbar PDF av nevnte bok
- Computer Science: An Overview, nedlastbar PDF av nevnte bok
- v
- d
- r
- Aktørbasert
- Aspektorientert
- Dataflyt
- Deklarativ
- Deriverbar
- Domenespesifikk
- Dynamisk
- Esoterisk
- Funksjonell
- Følbart
- Hendelsesdrevet
- Imperativ
- Malprosessor
- Makro
- Metaprogrammering
- Klassebasert
- Kommandokø (pipeline)
- Konkatenativ
- Logisk
- Objektbasert
- Objektorientert
- Prosedyrisk
- Prototypebasert
- Regelbasert
- Samtidig
- Selvmodifiserende
- Skripting
- Stakkorientert
- Synkront
- Tabell
- Utvidbar
- 1. generasjon
- 2. generasjon
- 3. generasjon
- 4. generasjon
- 5. generasjon