In [[informatica]], un '''opcode''' ('''op'''eration '''code''', ''codice operativo'') è una porzione di d'istruzione in [[linguaggio macchina]] che specificanospecifica l'operazione che deve essere svoltaeseguita. La loro specifica lunghezza e il formato del codice sono disposti nell'nel [[Instruction Set Architecture|set di istruzioni]] del processore in questione (che può essere una [[central processing unit|CPU]] generica o unaun'[[Processore|unità processing unitd'elaborazione]] più specializzata). Oltre allo stesso codice operativo, un'istruzione normalmente ha anche uno o più identificatori per gli [[operandi]] (ad esempio i [[dato|dati]]) sui quali l'operazione deve agire,; sebbeneva dellenotato che alcune operazioni debbanopossono avere operandi ''impliciti'', o nessun operando.
Ci sono set di istruzioni con campi quasi uniformi per l'opcode e gli specificatori degli operandi, così come altri (l'architettura [[x86]] per esempio) con una più complicata, struttura a lunghezza variabile. ▼
Un esempio potrebbe essere il numero <code>0001</code>, codice operativo che indica al calcolatore di effettuare una somma (ADD).<ref name="machine">[http://web.archive.org/web/20080213090055/http://www.atariarchives.org/mlb/introduction.php Machine Language For Beginners - Introduction<!-- Bot generated title -->]</ref> ▼
▲Ci sono set di istruzioni con campi quasi uniformi per l'opcode e gli specificatori degli operandi, così come altri (l'architettura [[x86]] per esempio) con una più complicata , struttura a lunghezza variabile.
A seconda dell'architettura, gli '''[[operandi]]''' possono essere valori nei registri, valori nello stack, altri valori in memoria,porte [[I/O]], ecc., specificata e accessibile usando un più o meno complesso modello di indirizzamento. I tipi di '''operazioni''' includenti operazioni aritmetiche, operazioni di copia dei dati, operazioni logiche, e controllo del programma,come istruzioni speciali (come [[CPUID]] e altri). ▼
▲Un esempio potrebbe essere il numero <code>0001</code>, codice operativo che indica al calcolatore di effettuare una somma (ADD).<ref name="machine">[ httphttps://web.archive.org/web/20080213090055/http://www.atariarchives.org/mlb/introduction.php Machine Language For Beginners - Introduction<!-- Bot generated title -->]</ref>
▲A seconda dell'architettura , gli '''[[operandi]]''' possono essere valori nei registri, valori nello stack, altri valori in memoria, porte [[I/O]], ecc., specificata e accessibile usando un più o meno complesso modello di indirizzamento. I tipi di '''operazioni''' includentiincludono operazioni aritmetiche, operazioni di copia dei dati, operazioni logiche , e controllo del programma, come istruzioni speciali (come [[CPUID]] e altri).
==Assembly==
L'''[[assembly]]'', è un [[linguaggio di programmazione]] a basso livello, che usa istruzioni ed operandi mnemonici per rappresentare codice macchina. QuestoCiò migliora la leggibilità mantenendo un preciso controllo sulle istruzioni macchina. La maggior parte della programmazione oggi è fatta usando [[Linguaggio di programmazione ad alto livello|linguaggi di programmazione ad alto livello]],<ref name="tiobe">[http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html TIOBE Software Popularity Index]</ref><ref name=langpop>[http://langpop.com/ Programming Language Popularity<!-- Titolo generato automaticamente -->] {{webarchive|url=https://web.archive.org/web/20150411135441/http://langpop.com/ |data=11 aprile 2015 }}</ref> che sono tipicamente più facili da leggere e scrivere. Questi linguaggi necessitano di essere [[compilatore|compilati]] (tradotti in linguaggio macchina), o, nei [[Linguaggio di scripting|linguaggi di scripting]], eseguiti attraverso altri eseguibili compilati.<ref name="asm">[http://www.swansontec.com/sprogram.htm Introduction to Assembly Language]</ref>
==Software instruction sets==
Gli opcode possono anche essere trovati in ciò che si chiama [[byte code]] e altre rappresentazioni indirizzate ad un interprete software anziché un dispositivo hardware. Questi set di istruzioni basati sul software spesso impiegano tipi di dati e operazioni leggermente di più alto livello rispetto alle controparti hardware, ma nonostante tutto sono costruiti lungo modelli similari. Esempi possono essere il linguaggio [[Java (linguaggio di programmazione)|Java]] con la ''[[Macchina virtuale Java|Java Virtual Machine]]'' (JVM), il [[bytecode ]] usato nello [[GNU Emacs]] per il codice [[LISP]] compilato, il ''[[Common Intermediate Language]]'' (CIL) di [[Microsoft .Net|.Net]] e molti altri.<ref name="bytecode"> [{{Cita web |url=http://www.pcmag.com/encyclopedia_term/0 ,2542,t=bytecode&i=39108,00%2C2542%2Ct%3Dbytecode%26i%3D39108%2C00.asp |titolo=bytecode Definition<!-- Bot generated title --> ] |accesso=14 febbraio 2012 |dataarchivio=6 ottobre 2012 |urlarchivio=https://web.archive.org/web/20121006015213/http://www.pcmag.com/encyclopedia_term/0%2C2542%2Ct%3Dbytecode%26i%3D39108%2C00.asp |urlmorto=sì }}</ref> ▼
Gli opcodes possono anche essere trovati in ciò che si chiama [[byte code]] e altre rappresentazioni indirizzate
▲ad un interprete software anziché un dispositivo hardware. Questi set di istruzioni basati sul software spesso impiegano tipi di dati e operazioni leggermente di più alto livello rispetto alle controparti hardware, ma nonostante tutto sono costruiti lungo modelli similari. Esempi possono essere il linguaggio [[Java (linguaggio di programmazione)|Java]] con la ''[[Macchina virtuale Java|Java Virtual Machine]]'' (JVM), il bytecode usato nello [[GNU Emacs]] per il codice [[LISP]] compilato, il ''[[Common Intermediate Language]]'' (CIL) di [[Microsoft .Net|.Net]] e molti altri.<ref name="bytecode">[http://www.pcmag.com/encyclopedia_term/0,2542,t=bytecode&i=39108,00.asp bytecode Definition<!-- Bot generated title -->]</ref>
==Note==
<references />
== Collegamenti esterni ==
* {{FOLDOC|operation code|operation code}}
{{Portale|informatica}}
[[Categoria:Microprocessore]]
[[Categoria:Instruction Processingprocessing]]
|