Qualsiasi CPU è progettata da zero per supportare un particolare set di istruzioni. Un set di istruzioni è un insieme di operazioni codificate che la CPU può eseguire. Queste operazioni possono essere, ad esempio, sommare due numeri, passare a una parte diversa del programma o confrontare due valori. Ogni operazione che un computer può eseguire è rappresentata in modo univoco da un codice operativo.
Codici operativi
Durante l'esecuzione di un programma, la CPU utilizza un contatore di programma per tenere traccia di quale istruzione deve essere eseguita successivamente. Quando un'istruzione viene recuperata, il contatore del programma viene incrementato della lunghezza dell'istruzione in modo che punti all'inizio dell'istruzione successiva. Ogni istruzione è costituita da un codice operativo. A seconda dell'istruzione, può includere o meno operandi. Gli operandi possono essere un valore costante o un puntatore alla posizione di un valore nel registro della CPU o nella RAM di sistema.
Una volta che l'istruzione completa è stata recuperata, deve essere decodificata. Questo è il processo in cui la CPU separa il codice operativo e tutti gli operandi. L'opcode decodificato viene utilizzato per abilitare o disabilitare specifici percorsi elettrici nella CPU che comporteranno il corretto funzionamento.
Una volta che l'istruzione è stata decodificata, verrà eseguita. Il comportamento esatto della CPU dipenderà dall'operazione. Un'operazione di addizione somma due valori insieme. Un'operazione di salto calcolerà dove saltare nel programma. Un'operazione di confronto confronterà due valori. Un'operazione NOP rimarrà inattiva, poiché NOP sta per Nessuna operazione.
La maggior parte delle istruzioni visualizzerà quindi il risultato dell'operazione. Questa uscita può andare ai registri del processore e, se necessario, alla RAM di sistema. Ognuna di queste operazioni richiede un singolo ciclo di clock per essere completata.
Codici operativi illegali
Ogni architettura della CPU ha il suo elenco specifico di codici operativi pubblicato dal produttore. I valori di questi codici operativi non sono necessariamente gli stessi multipiattaforma, motivo per cui il software deve essere compilato per architetture diverse. In alcuni casi, il produttore include anche codici operativi non documentati. Questi sono indicati come "codici operativi illegali". I codici operativi illegali, sebbene non documentati, eseguiranno la stessa funzione ogni volta che vengono chiamati. Poiché le funzionalità non documentate e non standard, tuttavia, gli aggiornamenti all'architettura della CPU possono semplicemente rimuoverle.
Alcuni dei primi giochi per computer sull'Apple II si basavano su specifici codici operativi illegali. Hanno quindi subito problemi di prestazioni e stabilità sulla successiva revisione della CPU Apple IIc poiché IIc ha rimosso gli opcode illegali richiesti dai giochi. I codici operativi illegali sono stati utilizzati anche nei circoli di protezione del copyright come metodo di sicurezza attraverso l'oscurità nella loro lotta contro i pirati che violano i loro contenuti. Alcuni codici operativi illegali sono semplicemente intesi come strumenti di debug e gestori di errori.
Il set di istruzioni x86 contiene un gran numero di codici operativi illegali non documentati. È interessante notare che alcuni di questi sono condivisi tra CPU Intel e AMD, indicando che entrambe le società sono pubblicamente consapevoli del loro scopo mentre non sono documentate.
Compilatori e Assemblaggio
La maggior parte dei programmi sono scritti in linguaggi di alto livello. Questi sono relativamente facili da leggere, spesso usando parole inglesi o abbreviazioni per ridurre al minimo le curve di apprendimento. Affinché un computer esegua questi programmi, devono essere compilati. Un compilatore è fondamentalmente un traduttore. Prende il codice di alto livello e lo converte in codice del computer, le istruzioni che la CPU può capire.
È anche possibile, in alcune lingue, eseguire codice non compilato tramite un programma precedentemente compilato che genera al volo codice macchina. Assembly è un linguaggio di programmazione di basso livello che utilizza la scorciatoia per consentire agli sviluppatori visibilità e controllo diretti sulle operazioni eseguite. NOP è un esempio di abbreviazione di assemblaggio.
Conclusione
Un set di istruzioni è un elenco di funzioni ufficiali che un'architettura CPU può eseguire. È un elenco di operazioni che possono essere eseguite. Queste operazioni sono codificate nella CPU e chiamate utilizzando i rispettivi codici operativi.
Il software generalmente utilizza un compilatore per tradurre da codice di alto livello leggibile dall'uomo al codice macchina che la CPU può leggere. A volte, un'architettura CPU può avere codici operativi non documentati, chiamati codici operativi illegali. I codici operativi illegali fanno tecnicamente parte del set di istruzioni. Tuttavia, potrebbero non essere disponibili in modo affidabile nelle future iterazioni della piattaforma. Non dimenticare di lasciare i tuoi pensieri nei commenti qui sotto.