Modes d'adreçament

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

Els modes d'adreçament són un aspecte de l'arquitectura del conjunt d'instruccions en la majoria dels dissenys d'unitats de processament central (CPU). Els diferents modes d'adreçament que es defineixen en una arquitectura de conjunt d'instruccions determinada defineixen com les instruccions del llenguatge màquina d'aquesta arquitectura identifiquen l' operand (s) de cada instrucció. Un mode d'adreçament especifica com calcular l'adreça de memòria efectiva d'un operand utilitzant informació continguda en registres i/o constants contingudes dins d'una instrucció de màquina o en un altre lloc.

En programació d'ordinadors, els modes d'adreçament són d'interès principal per a aquells que escriuen en llenguatges assembladors i per als escriptors de compiladors. Per a un concepte relacionat, vegeu el conjunt d'instruccions ortogonals que tracta de la capacitat de qualsevol instrucció per utilitzar qualsevol mode d'adreçament.[1]

Nombre de modes d'adreçament[modifica]

Les arquitectures d'ordinadors varien molt pel que fa al nombre de modes d'adreçament que proporcionen al maquinari. Hi ha alguns avantatges per eliminar els modes d'adreçament complexos i utilitzar només un o uns quants modes d'adreçament més senzills, tot i que requereix unes quantes instruccions addicionals, i potser un registre addicional.[2][3] S'ha demostrat [4][5][6] molt més fàcil dissenyar CPU canalitzades si els únics modes d'adreçament disponibles són els simples.

La majoria de les arquitectures RISC només tenen uns cinc modes d'adreçament simples, mentre que les arquitectures CISC com el DEC VAX tenen més d'una dotzena de modes d'adreçament, alguns dels quals són força complicats. L'arquitectura IBM System/360 només tenia tres modes d'adreçament; s'han afegit uns quants més per al System/390.

Modes d'adreçament senzills per a codi[modifica]

A continuació es mostren alguns modes d'adreçament senzills per al codi. La nomenclatura pot variar segons la plataforma.

Connexió absoluta.

Absoluta o directa[modifica]

+----+------------------------------+

|salta|.....adreça absoluta....|

+----+------------------------------+

(Adreça de PC efectiva = adreça)

L'adreça efectiva d'una adreça d'instrucció absoluta és el mateix paràmetre d'adreça sense modificacions.

Connexió relativa.

Relatiu a l'ordinador[modifica]

+----+------------------------------+

|salta|.......adreça relativa....|

+----+------------------------------+

(Adreça de PC efectiva = adreça d'instrucció següent + desplaçament, el desplaçament pot ser negatiu)

L'adreça efectiva d'una adreça d'instrucció relativa a l'ordinador és el paràmetre de compensació afegit a l'adreça de la següent instrucció. Aquest desplaçament sol ser signat per permetre la referència al codi tant abans com després de la instrucció.

Això és especialment útil en relació amb els salts, perquè els salts típics són a instruccions properes (en un llenguatge d'alt nivell la majoria de les declaracions si o mentre són raonablement curtes). Les mesures dels programes reals suggereixen que un desplaçament de 8 o 10 bits és prou gran per a un 90% dels salts condicionals (aproximadament ±128 o ±512 bytes).[7]

Connexió indirecta.

Indirecte a registre[modifica]

+----+------------------------------+

|salta|......valor de registre...|

+----+------------------------------+

(Adreça de PC efectiva = contingut del registre 'reg')

L'adreça efectiva d'una instrucció indirecta de registre és l'adreça del registre especificat. Per exemple, (A7) per accedir al contingut del registre d'adreces A7.

Modes d'adreçament senzills per a dades[modifica]

A continuació es mostren alguns modes d'adreçament senzills per a dades. La nomenclatura pot variar segons la plataforma.

Adreçament immediat.

Registre (o, registre directe)[modifica]

+------+-----+-----+-----+

| mul | reg1| reg2| reg3| reg1 := reg2 * reg3;

+------+-----+-----+-----+

Aquest "mode d'adreçament" no té una adreça efectiva i no es considera un mode d'adreçament en alguns ordinadors.

Adreçament directe.

Immediata/literal[modifica]

+------+-----+-----+----------------+

| afegir | reg1| reg2|constant | reg1 := reg2 + constant;

+------+-----+-----+----------------+

Aquest "mode d'adreçament" no té una adreça efectiva i no es considera un mode d'adreçament en alguns ordinadors.

Aquest "mode d'adreçament" no té una adreça efectiva i no es considera un mode d'adreçament en alguns ordinadors.

Adreçament inherent.

Implícit[modifica]

+---------------------------+

| bit de transport clar |

+---------------------------+

+----------------------------+

| esborra acumulador |

+---------------------------+

El mode d'adreçament implícit, també anomenat mode d'adreçament implícit (llenguatge ensamblador x86), no especifica explícitament una adreça efectiva ni per a la font ni per a la destinació (o de vegades ambdues).

Referències[modifica]

  1. «Addressing Modes» (en anglès). http://www.cs.iit.edu.+[Consulta: 2 setembre 2023].
  2. F. Chow; S. Correll; M. Himelstein; E. Killian; L. Weber ACM Sigarch Computer Architecture News, 15, 5, 1987, pàg. 117–121. DOI: 10.1145/36177.36193.
  3. John L. Hennessy. «An Overview of the MIPS-X-MP Project» (en anglès). http://i.stanford.edu.
  4. Dr. Jon Squire. «Lecture 19, Pipelining Data Forwarding» (en anglès). CS411 Selected Lecture Notes.
  5. «High Performance Computing, Notes of Class 11 (Sept. 15 and 20, 2000) - Pipelining» (en anglès). Arxivat de l'original el 2013-12-27. [Consulta: 8 febrer 2014].
  6. John Paul Shen, Mikko H. Lipasti. Modern Processor Design (en anglès). McGraw-Hill Professional, 2004. ISBN 9780070570641. 
  7. Kong, Shing. «Instruction set design» (en anglès).