Maskinkod

Maskinkod är ett datorprogram som är skrivet på maskinspråk. Det använder instruktionsuppsättningen för en viss datorarkitektur. Det är vanligtvis skrivet i binärt format. Maskinkod är den lägsta nivån av programvara. Andra programmeringsspråk översätts till maskinkod så att datorn kan utföra dem.

En instruktion talar om för processen vilken operation den ska utföra. Varje instruktion består av en opcode (operationskod) och operand(er). Operanderna är vanligtvis minnesadresser eller data. En instruktionsuppsättning är en förteckning över de opkoder som finns tillgängliga för en dator. Maskinkod är det som assemblerkod och andra programmeringsspråk kompileras till eller tolkas som.

Programkonstruktörer omvandlar kod till ett annat språk eller maskinkod. Maskinkod kallas ibland för inhemsk kod. Detta används när man talar om saker som bara fungerar på vissa datorer.

Att skriva maskinkod

Maskinkod kan skrivas på olika sätt:

  • Med hjälp av ett antal växlar. Detta genererar en sekvens av 1 och 0. Detta användes i början av datoriseringen. Sedan 1970-talet används det inte längre.
  • Använda en Hex-redigerare. Detta gör det möjligt att använda opkoder i stället för kommandonumret.
  • Användning av en assembler. Assemblerspråk är enklare än opkoder. Deras syntax är lättare att förstå än maskinspråk men svårare än högnivåspråk. Assemblern översätter källkoden till maskinkod på egen hand.
  • Genom att använda ett programmeringsspråk på hög nivå kan program som använder kod som är lättare att läsa och skriva. Dessa program översätts till maskinkod. Översättningen kan ske i många steg. Javaprogrammen optimeras först till bytekod. Därefter översätts den till maskinspråk när den används.
Frontpanelen på en tidig minidator, med kontakter för inmatning av maskinkod.Zoom
Frontpanelen på en tidig minidator, med kontakter för inmatning av maskinkod.

Typiska instruktioner i maskinkod

Det finns många olika typer av instruktioner som vanligtvis finns i en instruktionssats:

  • Aritmetiska operationer: Addition, subtraktion, multiplikation, division.
  • Logiska operationer: Konjunktion, disjunktion, negation.
  • Operationer som verkar på enskilda bitar: Skiftning av bitar till vänster eller höger.
  • Operationer som verkar på minnet: kopiering av ett värde från ett register till ett annat.
  • Operationer som jämför två värden: större än, mindre än, lika.
  • Operationer som kombinerar andra operationer: addera, jämföra och kopiera om det är lika med ett värde (som en operation), hoppa till en punkt i programmet om ett register är noll.
  • Operationer som påverkar programflödet: hoppa till en adress.
  • Operationer som konverterar datatyper: t.ex. konvertera ett 32-bitars heltal till ett 64-bitars heltal, konvertera ett flyttalvärde till ett heltal (genom att avkorta).

Många moderna processorer använder mikrokod för vissa av kommandona. Mer komplexa kommandon tenderar att använda den. Detta görs ofta med CISC-arkitekturer.

Instruktioner

Varje processor eller processorfamilj har sin egen instruktionsuppsättning. Instruktioner är mönster av bitar som motsvarar olika kommandon som kan ges till maskinen. Instruktionsuppsättningen är alltså specifik för en klass av processorer som (oftast) använder samma arkitektur.

Nyare processorkonstruktioner innehåller ofta alla instruktioner från en föregångare och kan lägga till ytterligare instruktioner. Ibland kommer en nyare konstruktion att avbryta eller ändra innebörden av en instruktionskod (vanligtvis för att den behövs för nya ändamål), vilket påverkar kodkompatibiliteten. Även nästan helt kompatibla processorer kan uppvisa något olika beteende för vissa instruktioner, men detta är sällan ett problem.

Systemen kan också skilja sig åt i andra detaljer, t.ex. i fråga om minnesarrangemang, operativsystem eller kringutrustning. Eftersom ett program normalt är beroende av sådana faktorer kommer olika system vanligtvis inte att köra samma maskinkod, även om samma typ av processor används.

De flesta instruktioner har ett eller flera opcode-fält. De anger den grundläggande instruktionstypen. Andra fält kan ange operandernas typ, adresseringsläge osv. Det kan också finnas särskilda instruktioner som ingår i själva opkoden. Dessa instruktioner kallas omedelbara instruktioner.

Processorkonstruktioner kan skilja sig åt på andra sätt. Olika instruktioner kan vara olika långa. De kan också ha samma längd. Att alla instruktioner har samma längd kan förenkla konstruktionen.

Exempel

MIPS-arkitekturen har instruktioner som är 32 bitar långa. Detta avsnitt innehåller exempel på kod. Den allmänna typen av instruktion finns i fältet op (operation). Det är de högsta 6 bitarna. Instruktioner av J-typ (jump) och I-typ (immediate) anges helt och hållet av op. Instruktioner av R-typ (register) innehåller fältet funct. Det bestämmer kodens exakta funktion. De fält som används i dessa typer är:

      6 5 5 5 5 5 5 6 bitar [ op | rs | rt | rd | rd |shamt| funct] R-typ [ op | rs | rt | address/immediate] I-typ [ op | måladress ] J-typ

rs, rt och rd anger registeroperanderna. shamt anger ett skiftbelopp. Adressfälten eller omedelbara fält innehåller en operand direkt.

Exempel: addera registren 1 och 2. Placera resultatet i register 6. Det kodas:

[ op | rs | rt | rd | shamt| funct] 0 1 2 2 6 0 32 decimal 000000 00001 00010 00110 00000 100000 binärt

Ladda ett värde i register 8. Ta det från minnescellen 68 celler efter den plats som anges i register 3:

[ op | rs | rt | address/immediate] 35 3 8 68 decimal 100011 00011 01000 00000 00000 00001 000100 binär

Hoppa till adressen 1024:

[ op | måladress ] 2 1024 decimal 000010 00000 00000 00000 00000 10000 000000 binärt

Relaterade sidor

  • Binärt siffersystem
  • Kvantdatorer
  • Instruktionsuppsättning
  • Dator med reducerad instruktionsuppsättning

Frågor och svar

F: Vad är maskinkod?


S: Maskinkod är ett datorprogram skrivet på maskinspråk som använder instruktionsuppsättningen för en viss datorarkitektur och är vanligtvis skrivet i binär form.

F: Vad är den lägsta nivån av programvara?


S: Maskinkod är den lägsta nivån av programvara.

F: Hur exekveras andra programmeringsspråk av datorer?


S: Andra programmeringsspråk översätts till maskinkod, som datorn kan exekvera.

F: Vad består en instruktion i maskinkod av?


S: En instruktion i maskinkod består av en opkod (operationskod) och en eller flera operander. Operanderna är vanligtvis minnesadresser eller data.

F: Vad är en instruktionsuppsättning?


S: En instruktionsuppsättning är en lista över de opkoder som finns tillgängliga för en dator.

F: Vad gör programbyggare med kod?


S: Programkonstruktörer omvandlar kod till ett annat språk eller maskinkod.

F: Vad är ett annat namn för maskinkod?


S: Maskinkod kallas ibland för inbyggd kod, vilket används när man talar om saker som bara fungerar på vissa datorer.

AlegsaOnline.com - 2020 / 2023 - License CC3