Representacin binaria de las instrucciones en el computador.
La secuencia de bits se divide en campos que especifican la operacin y los operandos. Representacin sencilla:
Representacin ms compleja: 2
Tamao de las instrucciones: aspecto bsico del diseo del formato.
Compromiso entre:
- Repertorio de instrucciones potente (ms operaciones, ms operandos, ms modos de direccionamiento y mayor rango de direcciones (ms registros)): ms bits para codificar.
- Programas cortos: instrucciones cortas y de longitud fija.
- Sencillez del hardware de captacin y decodificacin de las instrucciones: tamao de las instrucciones fijo e igual al tamao de la palabra de la mquina.
Los direccionamientos implcito e indirecto, permiten acortar el tamao de la instruccin.
3
Codificacin de los modos de direccionamiento
Segn el nmero de modos de direccionamiento que tenga una arquitectura:
4
Caractersticas de los formatos de instruccin que deben tener las arquitecturas:
- Cada computador tiene unos pocos formatos: cada instruccin se ajusta a uno de ellos. Cuantos menos ms sencilla la unidad de control.
- Son sistemticos: campos del mismo tipo tienen la misma longitud y ocupan el mismo sitio dentro de la instruccin (cdigo de operacin el primero). Simplifica la decodificacin de la instruccin.
5 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 instruccin, segn los modos de direccionamiento.
2 o 3 operandos explcitos, cada uno mediante un modo de direccionamiento determinado. 6 7
Veamos ejemplos de instrucciones (RR, RS y SI) del IBM 360:
Especificacin de las instrucciones:
Descripcin Cdigo mnemnico Cdigo operacin Formato instrucc. Especificacin de los operandos Suma normalizada larga ADR 2A RR R1, R2 Salta si ndice alto BXH 86 RS R1, R3, D2(B2) Movimiento inmediato MVI 92 SI D1(B1), inmediato
ADR 3, 4 equivale a 0x2A34 BXH 5, 8, X6B8(7) equivale a 0x865876B8 MVI XA49(6), X3F equivale a 0x923F6A49 8
El VAX
Formato de instruccin muy flexible: cdigo de operacin de 8 bits, seguido de un mximo de cinco especificadores de operando:
9 Cada especificador de operando se compone de dos o tres partes:
1. Cdigo 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 ms significativos son 00 y los 6 bits restantes (2 + 4 del campo registro) se utilizan para codificar el valor del operando.
2. Especificacin 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: 10 11
Ejemplos:
Dar la instruccin mquina equivalente a:
CLRL R13 equivale a 0xD45D
MOVW 362(R3), 67(R12) equivale a 0xB0C36A01AC43
ADDL3 #58, R1, 55(R11) equivale a 0xC13A51AC37 12 Formatos de instruccin de la MIPS (3 de 32 bits)
13
14
1. Tipo R (Registro)
- opcode: cdigo de operacin 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 funcin, especifica la operacin.
Utilizado para instrucciones aritmticas y lgicas: 15 (1.1) Tres operandos en registros
ADD rd, rs, rt (rd rs + rt)
SUB rd, rs, rt (rd rs - rt)
16 Ejemplos
Modo de direccionamiento registro: 17 (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 18
Divide rs por rt, deja el cociente en LO y el resto en HI.
Ejemplo DIV $8, $9 = 0 8 9 X X 0x1A 19 2. Tipo I (Inmediato)
- opcode: especifica la operacin. 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 condicin. - offset: desplazamiento. (2.3) instrucciones con operandos inmediatos: - rs: operando fuente. - rt: operando destino. - offset (inmediate): operando fuente. 20 (2.1) Instrucciones de carga/almacenamiento
LW rt, offset(base) (rt memory[base+offset])
SW rt, offset(base) (memory[base+offset] rt)
21 Ejemplos
22 Existen instrucciones distintas para los diferentes tamaos 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)
23 (2.2) Instrucciones de salto condicional (bifurcacin)
BEQ rs, rt, offset (if (rs = rt) then branch)
Operacin: tgt_offset sign_extend(offset || 0 2 ) 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. 24
Ejemplos
beq $19, $20, 6205
bne $19, $20, 6205
Estas instrucciones saltaran a la instruccin que est 6206 instrucciones ms adelante en memoria.
25 El modo de direccionamiento es relativo al contador de programa.
En este modo, se especifica el desplazamiento (en nmero de instrucciones), con respecto al PC, donde est la instruccin destino del salto: direccin destino = PC + desplazamiento * 4.
Las instrucciones de bifurcacin pueden saltar 2 15 -1 instrucciones hacia delante y 2 15 hacia atrs.
En el ejemplo, si la instruccin beq $19, $20, 6205 est en la direccin 5300, la direccin de la instruccin destino del salto sera: PC + (6205 * 4) = 5304 + 24820 = 30124 26 (2.3) Instrucciones con un operando inmediato Para operaciones con constantes
ADDI rt, rs, immediate (rt rs + immediate) Ejemplo
Modo de direccionamiento inmediato. 27 3. Tipo J (Salto)
Operacin: PC PC 32..28 || instr_index || 0 2
Modo de direccionamiento pseudodirecto: la direccin de salto son los 26 bits menos significativos de la instruccin, desplazados 2 posiciones a la izquierda y concatenados con los 4 bits ms significativos del PC.