Hopp til innhold

Maskinkode

Fra Wikipedia, den frie encyklopedi
Dataskjerm med disassemblatorkode, et program som analyserer en kompilert fil og reproduserer kildekoden i assemblerkode.
Ordet «Wikipedia» i binær kode.

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

[rediger | rediger kilde]

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

[rediger | rediger kilde]
  1. ^ «machine code (machine language)», Techtarget
  2. ^ Som mange versjoner av BASIC, særlig de eldste versjonene, foruten også Smalltalk, MATLAB, Perl, Python, Ruby og andre språk for særskilt hensikt eller skriptspråk.

Litteratur

[rediger | rediger kilde]
  • 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.

Eksterne lenker

[rediger | rediger kilde]