Maskinkode

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.

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 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å 
 Programmering
 Programmeringsspråk
 Datamaskin

Eksterne lenker 
 Computer Organization and Design, nedlastbar PDF av nevnte bok
 Computer Science: An Overview, nedlastbar PDF av nevnte bok

Programmering