Machine code




În programarea computerului, codul mașinii este codul computerului constând din instrucțiuni de limbaj al mașinii, care sunt utilizate pentru a controla unitatea centrală de procesare a computerului (CPU).

Deși computerele zecimale au fost cândva comune, piața contemporană este dominată de computere binare; Pentru aceste computere, codul mașinii este „reprezentarea binară a unui program de calculator, care este de fapt citit și interpretat de computer.

Un program în codul mașinii constă dintr -o secvență de instrucțiuni ale mașinii (eventual intercalat cu date).” Fiecare instrucțiune provoacă procesorul Pentru a efectua o sarcină foarte specifică, cum ar fi o sarcină, un magazin, un salt sau o operație de unitate de logică aritmetică (ALU) pe una sau mai multe unități de date din registrele sau memoria procesorului.

CPU -urile timpurii avea un cod specific al mașinii care ar putea rupe compatibilitatea înapoi cu fiecare nou procesor lansat.

Noțiunea de arhitectură a setului de instrucțiuni (ISA) definește și specifică comportamentul și codificarea în memoria setului de instrucțiuni al sistemului, fără a specifica implementarea exactă a acestuia.

Aceasta acționează ca un strat de abstractizare, permițând compatibilitatea în cadrul aceleiași familii de procesoare, astfel încât codul mașinii scrise sau generate în funcție de ISA pentru familie va funcționa pe toate procesoarele din familie, inclusiv viitorul procesoare.

În general, fiecare familie de arhitectură (de exemplu, x86, ARM) are propriul ISA și, prin urmare, propriul său limbaj specific de cod de mașină.

Există excepții, de ex.

IA-64 poate imita x86.

Codul mașinii este un limbaj strict numeric și este interfața la cel mai mic nivel la CPU destinat unui programator.

Limbajul de asamblare oferă o mapare directă între codul numeric al mașinii și o versiune care poate fi citită de oameni în care opcodele și operandele numerice sunt înlocuite cu șiruri lizibile (de exemplu, 0x90 este instrucțiunea NOP de pe x86).

Deși este posibil să scrieți programe direct în codul mașinii, gestionarea bițiilor individuali și calcularea adreselor și constantelor numerice este manual este obositor și predispus la erori.

Din acest motiv, programele sunt foarte rar scrise direct în codul mașinii în contexte moderne, dar pot fi făcute pentru depanare la nivel scăzut, patching de programe (mai ales atunci când sursa de asamblare nu este disponibilă) și demontarea limbajului de asamblare.

Majoritatea programelor practice astăzi sunt scrise în limbi de nivel superior.

Aceste programe sunt fie traduse în cod de mașină de către un compilator, fie sunt interpretate de un interpret, de obicei după ce a fost tradus într -un cod intermediar, cum ar fi un bytecode, care este apoi interpretat.

Pentru programator, dar intern, multe procesoare folosesc microcod sau optimizează și transformă instrucțiunile codului mașinii în secvențe de micro-op.

Microcodul și micro-operațiunile nu sunt considerate în general a fi cod de mașină; Cu excepția unor mașini, utilizatorul nu poate scrie microcod sau micro-op, iar funcționarea microcodului și transformarea instrucțiunilor de cod de mașină în micro-op se întâmplă în mod transparent la programator, cu excepția efectelor secundare legate de performanță.