# Codi d'operació

En informàtica, un codi operació (abreujat de OP CODE, també conegut com a codi de màquina d'instruccions, codi d'instrucció, síl·laba d'instruccions, instruction package or opstring) és la part d'una instrucció en llenguatge màquina que especifica l'operació que s'ha de realitzar. A més del codi operatiu en si, la majoria de les instruccions també especifiquen les dades que processaran, en forma d'operands. A més dels codis operatius utilitzats a les arquitectures de conjunt d'instruccions de diverses CPU, que són dispositius de maquinari, també es poden utilitzar en màquines informàtiques abstractes com a part de les especificacions de codi de bytes.

## Visió general

Les especificacions i el format dels codis operatius s'estableixen a l'arquitectura de conjunt d'instruccions (ISA) del processador en qüestió, que pot ser una CPU general o una unitat de processament més especialitzada. Els codis operatius per a un conjunt d'instruccions determinats es poden descriure mitjançant l'ús d'una taula de codis operatius que detalla tots els codis operatius possibles. A part del codi operatiu en si, una instrucció normalment també té un o més especificadors d'operands (és a dir, dades) sobre els quals hauria d'actuar l'operació, encara que algunes operacions poden tenir operands implícits, o cap. Hi ha conjunts d'instruccions amb camps gairebé uniformes per als especificadors de codi operatiu i d'operands, així com d'altres (l'arquitectura x86 per exemple) amb una estructura més complicada i de longitud variable. Els conjunts d'instruccions es poden ampliar mitjançant l'ús de prefixos de codi operatiu que afegeixen un subconjunt d'instruccions noves formades per codis operacionals existents seguint seqüències de bytes reservades.

## Exemple del processador de 8 bits Z80

| codi operació en hexadecimal | mnemotècnica | Descripció |
| 04 | INC B | incrementa B en un |
| 05 | DEC A | disminueix el registre A en un |
| 90 | SUB B | resta el registre B de l'acumulador A |
| 21 ll hh | LD HL, hhll | l oa d HL amb la constant hhll |
| ... | ... | més ordres |
Nota: Hi ha dos mnemotècnics diferents per al Z80 (LD M,B o LD (HL),B), més un tercer per a la CPU predecessora Intel 8085 (MOV M,B).
Seguint les mnemotècniques Z80:
DEC A
INC B
SUB B
LD HL,1234h
genera el següent programa de màquina Z80:
05 04 90 21 34 12
Avui en dia, els programes de màquina gairebé sempre es representen en hexadecimal (alternatives rares: decimal, octal). De vegades, els valors de 16 bits no es mostren com a dues paraules de 8 bits en ordre de bytes a la memòria principal, sinó com una paraula de 16 bits en ordre lògic:
05 04 90 21 1234

## Referències

* ↑ Schuppe, Amelia. «What is an opcode in computer?» (en anglès americà). https://www.timesmojo.com,+07-07-2022.+[Consulta: 1r setembre 2023].
* ↑ «Operation Code - an overview | ScienceDirect Topics» (en anglès). https://www.sciencedirect.com.+[Consulta: 1r setembre 2023].
* ↑ «https://www.codecademy.com/courses/computer-architecture/lessons/instruction-set-architectures/exercises/opcodes» (en anglès). https://www.codecademy.com.+[Consulta: 1r setembre 2023].
* ↑ Massey, Brendan. «OPCODES and Operation Instructions» (en anglès). https://masseybr.medium.com,+28-06-2021.+[Consulta: 1r setembre 2023].