Orice CPU este proiectat de la zero pentru a suporta un anumit set de instrucțiuni. Un set de instrucțiuni este un set de operații hard-coded pe care CPU le poate efectua. Aceste operații pot fi, de exemplu, adăugarea a două numere împreună, saltul la o parte diferită a programului sau compararea a două valori. Fiecare operație pe care o poate efectua un computer este reprezentată în mod unic printr-un cod operațional.
Opcodes
Când execută un program, CPU folosește un contor de program pentru a urmări instrucțiunile care trebuie executate în continuare. Când o instrucțiune este preluată, contorul programului este incrementat cu lungimea instrucțiunii astfel încât să indice începutul următoarei instrucțiuni. Fiecare instrucțiune constă dintr-un cod operațional. În funcție de instrucțiune, poate include sau nu operanzi. Operanzii pot fi o valoare constantă sau un pointer către locația unei valori în registrul CPU sau în RAM de sistem.
Odată ce instrucțiunea completă a fost preluată, aceasta trebuie decodificată. Acesta este procesul în care procesorul separă opcode-ul și orice operanzi. Opcode-ul decodat este folosit pentru a activa sau dezactiva anumite căi electrice din CPU care vor avea ca rezultat funcționarea corectă.
Odată ce instrucțiunea a fost decodificată, aceasta va fi executată. Comportamentul exact al procesorului va depinde de operare. O operațiune de adunare va însuma două valori împreună. O operație de salt va calcula unde din program să sari. O operație de comparare va compara două valori. O operațiune NOP va rămâne inactivă, deoarece NOP înseamnă No Operation.
Cele mai multe instrucțiuni vor afișa apoi rezultatul operației. Această ieșire poate merge la registrele procesorului și, dacă este necesar, la RAM de sistem. Fiecare dintre aceste operații durează un singur ciclu de ceas pentru a se finaliza.
Opcodes ilegale
Fiecare arhitectură CPU are lista sa specifică de coduri operaționale publicate de producător. Valorile acestor coduri operaționale nu sunt neapărat aceleași multiplatforme, motiv pentru care software-ul trebuie compilat pentru arhitecturi diferite. În unele cazuri, producătorul include și coduri operaționale nedocumentate. Acestea sunt denumite „coduri operaționale ilegale”. Opcodes ilegale, deși sunt nedocumentate, vor îndeplini aceeași funcție de fiecare dată când sunt apelate. Cu toate acestea, ca caracteristici nedocumentate și non-standard, actualizările arhitecturii CPU le pot elimina pur și simplu.
Unele jocuri pe computer timpurii de pe Apple II se bazau pe coduri de operare ilegale specifice. Apoi au suferit probleme de performanță și stabilitate la revizuirea ulterioară a procesorului Apple IIc, deoarece IIc a eliminat codurile de operare ilegale necesare jocurilor. Opcodes ilegale au fost, de asemenea, folosite în cercurile de protecție a drepturilor de autor ca metodă de securitate prin obscuritate în lupta lor împotriva piraților care le sparg conținutul. Unele coduri operaționale ilegale sunt pur și simplu menite ca instrumente de depanare și gestionare de erori.
Setul de instrucțiuni x86 conține un număr mare de coduri operaționale ilegale nedocumentate. Interesant este că unele dintre acestea sunt partajate între procesoarele Intel și AMD, ceea ce indică faptul că ambele companii sunt conștiente în mod public de scopul lor în timp ce sunt nedocumentate.
Compilatoare și asamblare
Majoritatea programelor sunt scrise în limbaje de nivel înalt. Acestea sunt relativ ușor de citit, folosind adesea cuvinte în engleză sau stenografie pentru a minimiza curbele de învățare. Pentru ca un computer să execute aceste programe, acestea trebuie să fie compilate. Un compilator este practic un traducător. Preia codul de nivel înalt și îl convertește în cod de computer, instrucțiunile pe care CPU le poate înțelege.
Este, de asemenea, posibil, în unele limbi, să rulați cod necompilat printr-un program compilat anterior care generează din mers codul mașinii. Assembly este un limbaj de programare de nivel scăzut care folosește prescurtarea pentru a permite dezvoltatorilor vizibilitate directă și control asupra operațiunilor efectuate. NOP este un exemplu de stenografie de asamblare.
Concluzie
Un set de instrucțiuni este o listă de funcții oficiale pe care o arhitectură CPU le poate rula. Este o listă de operații care pot fi efectuate. Aceste operațiuni sunt codificate hard în CPU și apelate folosind codurile operaționale respective.
Software-ul folosește în general un compilator pentru a traduce din codul de nivel înalt care poate fi citit de om în codul mașinii pe care CPU-ul îl poate citi. Uneori, o arhitectură a procesorului poate avea coduri operaționale nedocumentate, numite coduri operaționale ilegale. Codurile operaționale ilegale fac parte din punct de vedere tehnic din setul de instrucțiuni. Cu toate acestea, este posibil să nu fie disponibile în mod fiabil în viitoarele iterații ale platformei. Nu uitați să vă lăsați gândurile în comentariile de mai jos.