Codi d'operació

De la Viquipèdia, l'enciclopèdia lliure

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.[1][2]

Exemple d'instrucció que pot tenir diversos camps, que identifiquen l'operació lògica, i també poden incloure adreces d'origen i destinació i valors constants. Aquesta és la instrucció MIPS "Afegeix immediatament", que permet la selecció de registres d'origen i de destinació i la inclusió d'una petita constant.

Visió general[modifica]

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.[3][4]

Exemple del processador de 8 bits Z80[modifica]

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[modifica]