You are on page 1of 14

2.5.

Formato de las instrucciones

Representación binaria de las instrucciones en el computador.

La secuencia de bits se divide en campos que especifican la operación


y los operandos.
Representación sencilla:

Representación más compleja:

Tamaño de las instrucciones: aspecto básico del diseño del formato.

Compromiso entre:

- Repertorio de instrucciones potente (más operaciones, más


operandos, más modos de direccionamiento y mayor rango de
direcciones (más registros)): más bits para codificar.

- Programas cortos: instrucciones cortas y de longitud fija.

- Sencillez del hardware de captación y decodificación de las


instrucciones: tamaño de las instrucciones fijo e igual al tamaño de la
palabra de la máquina.

Los direccionamientos implícito e indirecto, permiten acortar el tamaño


de la instrucción.

2
Codificación de los modos de direccionamiento

Según el número de modos de direccionamiento que tenga una


arquitectura:

Características de los formatos de instrucción que deben tener las


arquitecturas:

- Cada computador tiene unos pocos formatos: cada instrucción se


ajusta a uno de ellos. Cuantos menos más sencilla la unidad de
control.

- Son sistemáticos: campos del mismo tipo tienen la misma longitud y


ocupan el mismo sitio dentro de la instrucción (código de operación
el primero). Simplifica la decodificación de la instrucción.

4
Ejemplos de formatos de instrucciones

IBM 360

16 registros de tipo general: 0 – 15


Palabra de 32 bits

Modos de direccionamiento del computador:


- inmediato (8 bits)
- registro: Ri (4 bits)
- almacenamiento (base + desplazamiento): Bi (registro base), Di
(desplazamiento de 12 bits)
- indexado: Xi (registro índice), Bi (registro base), Di (desplazamiento)

Tiene 5 formatos de instrucción, según los modos de direccionamiento.

2 o 3 operandos explícitos, cada uno mediante un modo de


direccionamiento determinado.
5

6
Veamos ejemplos de instrucciones (RR, RS y SI) del IBM 360:

Especificación de las instrucciones:

Descripción Código Código Formato Especificación de


mnemónico operación instrucc. los operandos
Suma ADR 2A RR R1, R2
normalizada
larga
Salta si BXH 86 RS R1, R3, D2(B2)
índice alto
Movimiento MVI 92 SI D1(B1), inmediato
inmediato

ADR 3, 4 equivale a 0x2A34


BXH 5, 8, X’6B8’(7) equivale a 0x865876B8
MVI X’A49’(6), X’3F’ equivale a 0x923F6A49
7

El VAX

Formato de instrucción muy flexible: código de operación de 8 bits,


seguido de un máximo de cinco especificadores de operando:

8
Cada especificador de operando se compone de dos o tres partes:

1. Código del modo de direccionamiento (4 bits):

- 5: registro
- 0xC: base + desplazamiento (de 16 bits)
- 0xA: base + desplazamiento (de 8 bits)
- Para especificar un operando inmediato los 2 bits más significativos
son 00 y los 6 bits restantes (2 + 4 del campo registro) se utilizan
para codificar el valor del operando.

2. Especificación de registro (4 bits).

3. Especifica opcionalmente un desplazamiento en el


direccionamiento base + desplazamiento (8, 16 ó 32 bits).

Veamos algunos ejemplos de instrucciones del VAX:


9

10
Ejemplos:

Dar la instrucción máquina equivalente a:

CLRL R13 equivale a 0xD45D

MOVW 362(R3), 67(R12) equivale a 0xB0C36A01AC43

ADDL3 #58, R1, 55(R11) equivale a 0xC13A51AC37

11

Formatos de instrucción de la MIPS (3 de 32 bits)

12
13

1. Tipo R (Registro)

- opcode: código de operación primario, cuyo valor es cero.


- rs: especificador de registro fuente.
- rt: especificador de registro objetivo (fuente/destino).
- rd: especificador de registro destino.
- sa: cantidad de desplazamiento.
- function: campo función, especifica la operación.

Utilizado para instrucciones aritméticas y lógicas:


14
(1.1) Tres operandos en registros

ADD rd, rs, rt (rd ← rs + rt)

SUB rd, rs, rt (rd ← rs - rt)

15

Ejemplos

Modo de direccionamiento registro:

16
(1.2) Dos operandos en registros

SLL rd, rt, sa (rd ← rt << sa)


(Desplaza rt, sa posiciones a la izquierda, y pone el resultado en rd)

Ejemplo
sll $7, $3, 5 = 0 X 3 7 5 0

17

Divide rs por rt, deja el cociente en LO y el resto en HI.

Ejemplo
DIV $8, $9 0 8 9 X X 0x1A =

18
2. Tipo I (Inmediato)

- opcode: especifica la operación.


Para instrucciones:
(2.1) de transferencia de datos (carga/almacenamiento):
- rs: registro base.
- rt: registro fuente/destino.
- offset: desplazamiento.
(2.2) de salto condicional:
- rs y rt: para establecer la condición.
- offset: desplazamiento.
(2.3) instrucciones con operandos inmediatos:
- rs: operando fuente.
- rt: operando destino.
- offset (inmediate): operando fuente.
19

(2.1) Instrucciones de carga/almacenamiento

LW rt, offset(base) (rt ← memory[base+offset])

SW rt, offset(base) (memory[base+offset] ← rt)

20
Ejemplos

21

Existen instrucciones distintas para los diferentes tamaños de dato


(i) Load Byte

(ii) Load Half Word

(iii) Load Word

En todos los casos, el direccionamiento para el segundo operando es


base (registro rt) + desplazamiento (offset)

22
(2.2) Instrucciones de salto condicional (bifurcación)

BEQ rs, rt, offset (if (rs = rt) then branch)

Operación: tgt_offset ← sign_extend(offset || 02)


condition ← (GPR[rs] = GPR[rt])
if (condition) then PC ← PC + tgt_offset endif

An 18-bit signed offset (the 16-bit offset field shifted left 2 bits) is added
to the address of the instruction following the branch (not the branch
itself), to form a PC-relative effective target address.
23

Ejemplos

beq $19, $20, 6205

bne $19, $20, 6205

Estas instrucciones saltarían a la instrucción que está 6206


instrucciones más adelante en memoria.

24
El modo de direccionamiento es relativo al contador de programa.

En este modo, se especifica el desplazamiento (en número de


instrucciones), con respecto al PC, donde está la instrucción destino del
salto: dirección destino = PC + desplazamiento * 4.

Las instrucciones de bifurcación pueden saltar 215-1 instrucciones hacia


delante y 215 hacia atrás.

En el ejemplo, si la instrucción “beq $19, $20, 6205” está en la dirección


5300, la dirección de la instrucción destino del salto sería:
PC + (6205 * 4) = 5304 + 24820 = 30124

25

(2.3) Instrucciones con un operando inmediato


Para operaciones con constantes

ADDI rt, rs, immediate (rt ← rs + immediate)


Ejemplo

Modo de direccionamiento inmediato.


26
3. Tipo J (Salto)

Operación: PC ← PC32..28 || instr_index || 02

Modo de direccionamiento pseudodirecto: la dirección de salto son los


26 bits menos significativos de la instrucción, desplazados 2 posiciones
a la izquierda y concatenados con los 4 bits más significativos del PC.

27

You might also like