Limbajul mașinii

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În informatică , limbajul mașinilor (sau codul mașinii ) este limbajul în care sunt scrise programele de calculator executabile : poate fi clasificat ca limbaj de programare , deși această din urmă expresie este mai des rezervată pentru a indica limbajele de nivel înalt cu care acestea scrie programe care nu sunt direct executabile, dar care necesită o traducere în limbajul mașinii, de ex. prin intermediul unui compilator .

Descriere

Pictogramă lupă mgx2.svg Același subiect în detaliu: Sistem de numere binare .

Limbajul mașinii se bazează pe un alfabet numit binar deoarece include doar două simboluri, în general indicate cu 0 și 1 : un simbol al acestui alfabet se numește bit . Procesorul sau CPU este acea componentă hardware a unui computer capabil să execute programe scrise în limbajul mașinii. Cu alte cuvinte, limbajul mașinii definește setul de instrucțiuni fundamentale pe care un procesor este capabil să le efectueze ( set de instrucțiuni ) în care trebuie traduse codurile de program care trebuie executate. În special, limbajele de nivel inferior sunt obținute ca o simplă codificare (tabel de asociere) pornind de la limbajul mașinii într-un crescendo de abstractizare.

Ca și în limbile naturale , în limbajul mașinii simbolurile alfabetului folosit (1 și 0) sunt organizate în „cuvinte” care la rândul lor constituie „propoziții”. Propozițiile în limbaj automat se numesc instrucțiuni ; fiecare dintre ei comandă procesorului să efectueze o acțiune elementară referitoare la starea internă a computerului, cum ar fi citirea unei locații de memorie sau calcularea sumei valorilor conținute în două registre .

Frazele constau în general dintr-un cuvânt inițial numit cod operațional inițial, care indică tipul de acțiune care trebuie efectuată, urmat de alte cuvinte care specifică parametrii (sau datele) cărora trebuie să li se aplice acțiunea (de exemplu „SUMA” - „15” - „20”). Dacă considerăm primul cuvânt ca un „verb” al propoziției, putem spune prin analogie că limbajul mașinii oferă verbe doar la imperativ; deloc surprinzător, limbajele de programare care au această caracteristică se numesc limbaje imperative . Procesoarele tradiționale puteau executa o singură instrucțiune odată; tehnologiile se răspândesc în prezent (cum ar fi cea a procesoarelor suprascalare ) care permit executarea mai multor instrucțiuni în paralel . Instrucțiunile care pot apărea într-un program de limbaj mașină descriu acțiuni simple precum „adăugați”, „împărțiți” sau „comparați”.

Compatibilitate

Expresia limbaj mașină ” este, strict vorbind, incorectă; de fapt, fiecare model de procesor este capabil să înțeleagă propriul limbaj al mașinii. Cu toate acestea, deși variază în sintaxă specifică, limbajele mașinii tuturor procesorilor se bazează pe un set de principii și concepte similare.

Dacă un anumit procesor P1 înțelege exact limba unui alt procesor P2, se spune că P1 este compatibil cu P2. De exemplu, așa-numitele procesoare x86 sunt denumite în acest fel deoarece sunt capabile să înțeleagă un limbaj de mașină inventat de Intel și folosit ulterior și pe procesoarele AMD , VIA sau Cyrix . Trebuie remarcat faptul că diferite procesoare compatibile nu trebuie să fie compatibile și la nivel hardware: procesoarele Intel și AMD x86 interpretează același limbaj al mașinii, chiar dacă intern sunt foarte diferite.

Relația cu adunarea

Pictogramă lupă mgx2.svg Același subiect în detaliu: limbajul asamblării .

Limbajul mașinii este adesea confundat cu limbajul de asamblare, dar în realitate acesta din urmă este un limbaj de programare de nivel scăzut care, similar cu limbajele de nivel înalt, cum ar fi C , C ++ , C # , Pascal , Java , Python , Visual Basic , Ruby etc. necesită un proces de traducere. Spre deosebire de acesta din urmă, ansamblul permite o traducere deosebit de simplă care transformă fiecare instrucțiune de asamblare, într-un mod unic, într-o instrucțiune de limbaj automat.

Codurile operaționale și datele limbajului mașinii sunt modele de biți (șiruri). Ansamblul folosește în schimb instrucțiuni mnemonice, ceea ce face mai ușor pentru programatorul uman dezvoltarea și depanarea programelor. De exemplu, pe procesorul Z80 , codul mașinii 00000101b (05h) corespunde ordinii de scădere a numărului conținut în registrul B [1] , în timp ce în limbajul asamblării se scrie aceeași ordine DEC B [2] .

Exemple de notație

Pentru comoditate, codurile mașinii pot fi transcrise și în notație hexazecimală : de exemplu, întotdeauna în Z80 succesiunea codurilor:

 3E 41 D3

este fix în timp ce în altele variază de la educație la educație. Organizarea tiparului variază, de asemenea, foarte mult.

Ca exemplu specific putem lua arhitectura MIPS . Instrucțiunile acestei arhitecturi sunt alcătuite din 32 de biți (sau 4 octeți ). Primii 6 biți conțin codul opțional. Instrucțiunile de tip J (de la jump: jump) și I (imediat) sunt complet specificate de câmpul op în timp ce instrucțiunile de tip R (registru) includ un câmp suplimentar numit func care codifică funcția specifică care trebuie efectuată. Formatul detaliat al instrucțiunilor este după cum urmează:

 6 5 5 5 5 6 biți
[op | rs | rt | adresa / imediat] tip I
[op | adresa țintă] tip J
[op | rs | rt | rd | shamt | funct] tip R

rs , rt și rd indică registrele în care se găsesc operanzii; shamt înseamnă „suma de schimbare” în timp ce adresa și imediat conțin direct operanzi.

De exemplu, operația de adăugare a registrelor 1 și 2 cu stocarea rezultatului în registrul 6 este codificată ca:

 [op | rs | rt | rd | shamt | funct]
    0 1 2 6 0 32 formă zecimală
 000000 00001 00010 00110 00000 100000 formă binară

Încărcarea în registrul 8 a unei valori stocate în celula de memorie situată la 68 de celule după cea indicată de registrul 3:

 [op | rs | rt | adresa / imediat]
   35 3 8 68 formă zecimală

Notă

  1. ^ ( EN ) Manual de procesare Z80, Coduri de funcționare a instrucțiunilor, Tabel de operații aritmetice / logice ( PDF ), la z80.info , pp. 50-51. Adus la 31 octombrie 2020 ( arhivat la 14 septembrie 2020) .
  2. ^ (EN) Manual procesor Z80, asamblare, educație DEC (PDF) pe z80.info, pp. 170-171. Adus la 31 octombrie 2020 ( arhivat la 14 septembrie 2020) .

Bibliografie

  • David Andrew Patterson și John Leroy Hennessy, Computerul: abstracții și tehnologie , în Structura și proiectarea computerelor , ediția a IV-a, Zanichelli, 2015, ISBN 978-88-08-35202-6 .
  • David Andrew Patterson și John Leroy Hennessy, Instrucțiuni: limbajul computerelor , în Structura și proiectarea computerelor , ediția a IV-a, Zanichelli, 2015, ISBN 978-88-08-35202-6 .

Elemente conexe

Controlul autorității GND ( DE ) 4037827-5
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT