Mašīnkods

Mašīnkods ir mašīnvalodā rakstīta datorprogramma. Tā izmanto konkrētas datora arhitektūras instrukciju kopumu. To parasti raksta binārajā rakstībā. Mašīnkods ir zemākais programmatūras līmenis. Citas programmēšanas valodas tiek tulkotas mašīnkodā, lai dators varētu tās izpildīt.

Instrukcija norāda procesam, kāda darbība jāveic. Katru instrukciju veido opkods (operācijas kods) un operands(-i). Operandi parasti ir atmiņas adreses vai dati. Instrukciju kopums ir datoram pieejamo opkodu saraksts. Mašīnkods ir tas, uz ko kompilē asembleru kodu un citas programmēšanas valodas vai kā to interpretē.

Programmu veidotāji pārvērš kodu citā valodā vai mašīnkodā. Mašīnkods dažkārt tiek saukts par vietējo kodu. To lieto, runājot par lietām, kas darbojas tikai dažos datoros.

Mašīnkoda rakstīšana

Mašīnkodus var rakstīt dažādos veidos:

  • Izmantojot vairākus slēdžus. Tas ģenerē secību no 1 un 0. To izmantoja skaitļošanas sākumposmā. Kopš 20. gadsimta 70. gadiem to vairs neizmanto.
  • Izmantojot Hexredaktoru. Tas ļauj komandas numura vietā izmantot opkodus.
  • Asemblera izmantošana. Asamblēšanas valodas ir vienkāršākas nekā opkodi. To sintakse ir vieglāk saprotama nekā mašīnvalodas, bet grūtāk saprotama nekā augsta līmeņa valodas. Asemblera programma pati pārtulkos pirmkodu mašīnkodā.
  • Izmantojot augsta līmeņa programmēšanas valodu, programmās var izmantot kodu, ko ir vieglāk lasīt un rakstīt. Šīs programmas tiek tulkotas mašīnkodā. Tulkošana var notikt vairākos posmos. Java programmas vispirms tiek optimizētas baitkodā. Pēc tam tās tiek tulkotas mašīnvalodā, kad tās tiek izmantotas.
Agrīna minidatora priekšējais panelis ar slēdžiem mašīnkoda ievadīšanaiZoom
Agrīna minidatora priekšējais panelis ar slēdžiem mašīnkoda ievadīšanai

Tipiskas mašīnkoda instrukcijas

Instrukciju komplektā parasti ir atrodami dažādi instrukciju veidi:

  • Aritmētiskās darbības: Saskaitīšana, atņemšana, reizināšana, dalīšana.
  • Loģiskās operācijas: Konjunkcija, disjunkcija, noliegums.
  • Darbības ar atsevišķiem bitiem: bitu pārvietošana pa labi vai pa kreisi.
  • Darbības ar atmiņu: vērtības kopēšana no viena reģistra uz citu.
  • Operācijas, kas salīdzina divas vērtības: lielāks par, mazāks par, vienāds.
  • Operācijas, kas apvieno citas operācijas: saskaitīšana, salīdzināšana un kopēšana, ja vienāda ar kādu vērtību (kā viena operācija), lēciens uz kādu programmas punktu, ja reģistrā ir nulle.
  • Operācijas, kas iedarbojas uz programmas plūsmu: lēciens uz kādu adresi.
  • datu tipu konvertēšanas operācijas: piemēram, 32 bitu veselā skaitļa konvertēšana uz 64 bitu veselu skaitli, peldošā komata vērtības konvertēšana uz veselu skaitli (saīsinot).

Daudzi mūsdienu procesori dažām komandām izmanto mikrokodu. Sarežģītākās komandās to parasti izmanto. Tas bieži tiek darīts ar CISC arhitektūrām.

Instrukcijas

Katram procesoram vai procesoru saimei ir savs instrukciju komplekts. Instrukcijas ir bitu paraugi, kas atbilst dažādām komandām, kuras var uzdot mašīnai. Tādējādi instrukciju kopums ir specifisks procesoru klasei, kas izmanto (lielākoties) vienu un to pašu arhitektūru.

Jaunākos procesoru dizainos bieži vien ir iekļautas visas priekšgājēja instrukcijas un var tikt pievienotas papildu instrukcijas. Dažreiz jaunākā dizainā tiek pārtraukta vai mainīta instrukcijas koda nozīme (parasti tāpēc, ka tā ir nepieciešama jauniem mērķiem), ietekmējot koda savietojamību; pat gandrīz pilnībā savietojami procesori var uzrādīt nedaudz atšķirīgu dažu instrukciju uzvedību, taču tas reti rada problēmas.

Sistēmas var atšķirties arī citās detaļās, piemēram, atmiņas izvietojumā, operētājsistēmās vai perifērijas ierīcēs. Tā kā programma parasti ir atkarīga no šādiem faktoriem, dažādās sistēmās parasti netiek palaists viens un tas pats mašīnkods, pat ja tiek izmantots viena tipa procesors.

Lielākajai daļai instrukciju ir viens vai vairāki opkoda lauki. Tie norāda instrukcijas pamattipu. Citi lauki var norādīt operandu tipu, adresācijas režīmu utt. Var būt arī īpašas instrukcijas, kas ietvertas pašā opkodā. Šīs instrukcijas sauc par tūlītējām instrukcijām.

Procesoru dizaini var atšķirties arī citos aspektos. Dažādām instrukcijām var būt atšķirīgs garums. Tām var būt arī vienāds garums. Ja visām instrukcijām ir vienāds garums, var vienkāršot konstrukciju.

Piemērs

MIPS arhitektūrā ir 32 bitu garas instrukcijas. Šajā sadaļā ir kodu piemēri. Vispārīgais instrukcijas tips ir op (operācijas) laukā. Tie ir 6 augstākie biti. J tipa (lēciena) un I tipa (tūlītēja) instrukcijas pilnībā norāda op. R tipa (reģistra) instrukcijas ietver lauku funct. Tas nosaka precīzu koda darbību. Šajos tipos izmantotie lauki ir šādi:

      6 5 5 5 5 5 5 5 6 biti [ op | rs | rt | rd | rd | šamts| funct] R-tips [ op | rs | rt | rt | adrese/ātrākais] I-tips [ op | mērķa adrese ] J-tips

rs, rt un rd norāda reģistra operandus. shamt norāda nobīdes summu. Adreses vai tūlītējās adreses laukā ir tieši operands.

Piemērs: saskaitiet reģistrus 1 un 2. Iegūto rezultātu ievietojiet 6. reģistrā. Tas ir kodēts:

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

Ielādējiet vērtību 8. reģistrā. Ņemiet to no atmiņas šūnas 68 šūnās pēc 3. reģistrā norādītās vietas:

[ op | rs | rt | rt | address/immediate] 35 3 8 68 decimālā 100011 00011 01000 00000 00000 00001 000100 binālā binālā

Pāriet uz adresi 1024:

[ op | mērķa adrese ] 2 1024 decimālskaitlis 000010 00000 00000 00000 00000 10000 000000 binārais skaitlis

Saistītās lapas

  • Bināro skaitļu sistēma
  • Kvantu datori
  • Instrukciju komplekts
  • Dators ar samazinātu instrukciju kopu

Jautājumi un atbildes

J: Kas ir mašīnkods?


A: Mašīnkods ir mašīnvalodā rakstīta datorprogramma, kurā izmanto konkrētas datora arhitektūras instrukciju kopumu un kuru parasti raksta binārā formā.

J: Kas ir zemākais programmatūras līmenis?


A: Mašīnkods ir zemākais programmatūras līmenis.

J: Kā datori izpilda citas programmēšanas valodas?


A: Citas programmēšanas valodas tiek tulkotas mašīnkodā, ko dators var izpildīt.

J: No kā sastāv mašīnkoda instrukcija?


A: Instrukcija mašīnkodā sastāv no opkoda (operācijas koda) un operanda(-iem). Operandi parasti ir atmiņas adreses vai dati.

J: Kas ir instrukciju kopums?


A: Instrukciju kopums ir datoram pieejamo opkodu saraksts.

J: Ko programmu veidotāji dara ar kodu?


A: Programmu veidotāji pārveido kodu citā valodā vai mašīnkodā.

J: Kāds ir cits mašīnkoda nosaukums?


A: Mašīnkods dažkārt tiek saukts par vietējo kodu, ko lieto, runājot par lietām, kas darbojas tikai dažos datoros.

AlegsaOnline.com - 2020 / 2023 - License CC3