thumb|upright=1.35|Monitor de cod mașină rulând pe un microprocesor W65C816S, afișând dezasamblarea codului și dump-uri ale regiștrilor procesorului și ale memoriei

În informatică, codul mașină reprezintă date codificate și structurate pentru a controla unitatea centrală de procesare a unui calculator prin intermediul interfeței sale programabile. Un program de calculator constă în principal din secvențe de instrucțiuni în cod mașină. Codul mașină este clasificat ca fiind nativ în raport cu procesorul gazdă, deoarece este limbajul pe care CPU-ul îl interpretează direct. Unele interpretoare traduc limbajul de programare pe care îl interpretează într-un cod mașină virtual și îl procesează cu o mașină de tip P-code.

O instrucțiune în cod mașină determină procesorul să execute o sarcină specifică, cum ar fi:

Încărcarea unui cuvânt din memorie într-un registru de procesor; Executarea unei operații în unitatea aritmetică-logică (ALU) asupra unuia sau mai multor regiștri sau locații de memorie; Saltul la o instrucțiune care nu este următoarea în program.

O arhitectură a setului de instrucțiuni ( în engleză) definește interfața pe care un CPU o expune programatorilor și variază în funcție de grupările sau familiile procesoarelor, cum ar fi x86 și ARM. În general, codul mașină compatibil cu o familie nu este compatibil cu altele, deși există excepții. Arhitectura VAX include suport opțional pentru setul de instrucțiuni PDP-11. Arhitectura IA-64 include suport opțional pentru setul de instrucțiuni IA-32. Iar PowerPC 615 poate procesa nativ atât instrucțiuni PowerPC, cât și x86.

Limbaj de asamblare

Limbajul de asamblare oferă o corespondență relativ directă de la un cod sursă lizibil de către oameni la cod mașină. Codul sursă în asamblare reprezintă codurile numerice din codul mașină sub formă de mnemonici și etichete. De exemplu, NOP în asamblare pentru un procesor x86 reprezintă codul operațional 0x90 al arhitecturii în cod mașină. Deși este posibil să scrii un program în cod mașină, acest lucru este anevoios și predispus la erori. Prin urmare, programele sunt rareori scrise în asamblare dar, cel mai frecvent, într-un limbaj de programare de nivel înalt. Mai departe, un compilator va lua codul sursă și îl va traduce într-un limbaj de asamblare compatibil cu arhitectura țintă, iar un asamblor îl va transforma în cod mașină.

Set de instrucțiuni O instrucțiune codifică o operație sub forma unui secvențe de biți, pe baza formatului specificat pentru setul de instrucțiuni al mașinii.Pe primele calculatoare zecimale, se foloseau în schimb caractere, cifre și semne matematice

Seturile de instrucțiuni diferă în diverse moduri. Instrucțiunile unui set pot avea toate aceeași lungime sau instrucțiuni diferite pot avea lungimi diferite; acestea pot fi mai mici, de aceeași dimensiune sau mai mari decât dimensiunea cuvântului arhitecturii. Numărul de instrucțiuni poate fi relativ mic sau mare. Instrucțiunile pot fi sau nu obligate să fie aliniate la anumite limite de memorie, cum ar fi limita cuvântului arhitecturii.

Un set de instrucțiuni trebuie să execute circuitele nivelului de logică digitală al unui calculator. La nivel digital, programul trebuie să controleze regiștrii, magistrala (bus), memoria, unitatea aritmetico-logică (ALU) și alte componente hardware ale calculatorului. Pentru a controla caracteristicile arhitecturale ale unui calculator, sunt create instrucțiuni mașină. Exemple de caracteristici care sunt controlate folosind instrucțiuni mașină:

regiștri de segmentare a memoriei mod de adresare protejat aritmetică în cod binar zecimal (BCD)

Criteriile pentru formatele instrucțiunilor includ: Instrucțiunile utilizate cel mai frecvent ar trebui să fie mai scurte decât cele utilizate rar. Rata de transfer a memoriei hardware-ului determină flexibilitatea instrucțiunilor de preluare () din memorie. Numărul de biți din câmpul de adresă necesită o atenție specială.

Determinarea dimensiunii câmpului adresei este o alegere între spațiu și viteză. Pe unele calculatoare, numărul de biți din câmpul de adresă poate fi prea mic pentru a accesa întreaga memorie fizică. De asemenea, spațiul de adrese virtuale trebuie luat în considerare. O altă constrângere poate fi o limitare a dimensiunii regiștrilor utilizați pentru a construi adresa. Deși un câmp de adresă mai scurt permite instrucțiunilor să se execute mai rapid, alte proprietăți fizice trebuie luate în considerare în proiectarea formatului instrucțiunilor. Instrucțiunile pot fi separate în două tipuri: de uz general și cu scop special. Instrucțiunile cu scop special exploatează caracteristici arhitecturale care sunt unice pentru un calculator. Instrucțiunile de uz general controlează caracteristicile arhitecturale comune tuturor calculatoarelor.

Microcod În unele calculatoare, codul mașină al arhitecturii este implementat printr-un strat subiacent numit microcod, oferind o interfață comună de limbaj mașină pentru o întreagă linie sau familie de modele diferite de calculatoare care au fluxuri de date foarte diferite. Acest lucru este realizat pentru a facilita portarea programelor în limbaj mașină între diferite modele. Un exemplu al acestei utilizări este familia de calculatoare IBM System/360 și succesorii săi. Note

Categorie:Limbaje de programare