Instrucciones aritméticas MIPS

Download Report

Transcript Instrucciones aritméticas MIPS

Slide 1

CAPÍTULO 2

(II - Parte)

Instrucciones: FORMATO
DE INSTRUCCIONES


Slide 2

Modos de direccionamiento MIPS










Direccionamiento por registro – el operando se encuentra
almacenado en un registro
Direccionamiento Base (desplazamiento) – el operando se
encuentra almacenado en una posición de memoria cuya
dirección es la suma del contenido de un registro y una
constante de 16 bits, contenida en la misma instrucción.
Direccionamiento inmediato – el operando es una
constante de 16 bits contenida en la misma instrucción.
Direccionamiento relativo al PC – la dirección de la
instrucción es la suma del contenido del PC y una
constante de 16 bits contenida en la misma instrucción.
Direccionamiento pseudo directo – la dirección de la
instrucción se forma con los 26 bits contenidos en la
instrucción concatenados con los cuatro bits más
significativos del PC.
Ing. José Alberto Díaz García

—2


Slide 3

Ilustración de los modos de direccionamiento
1. Direcc por registro
op

rs

rt

rd

funct

Registro
Palabra Operando

2. Direcc base
op

rs

rt

offset

Memoria
Operando word o byte

Registro base

3. Direcc. base
op

rs

rt

operando

4. Direcc relativo PC
op

rs

rt

offset

Memoria
Destino de la instrucción de salto

Contador de programa (PC)

5. Direcc. Pseudo directo
op

Memoria

dirección de salto
Contador de Programa (PC)
Ing. José Alberto Díaz García

|
|

Destino de la instruc. de salto
Concatenado

—3


Slide 4

Campos en las instrucciones MIPS









op

rs

rt

rd

shamt

6 bits

5 bits

5 bits

5 bits

5 bits

funct
6 bits

= 32 bits

Código de la operación que se realizará
op
rs
Dirección del registro del primer operando fuente
rt
Dirección del registro del segundo operando fuente
Dirección del registro destino
rd
shamt shift amount, para las instrucciones de desplazamiento
(cantidad de desplazamientos)
funct Código de function que selecciona las variantes

específicas de la operación indicada en el campo
de código de operación
Ing. José Alberto Díaz García

—4


Slide 5

Instrucciones aritméticas MIPS


Instrucciones aritméticas MIPS
add $t0, $s1, $s2
sub $t0, $s1, $s2



Cada instrucción aritmética realiza una operación



Cada una especifica tres operandos almacenados en
registros de la ruta de datos ($t0,$s1,$s2)
destino  fuente1

op

fuente2



Formato de la instrucción (Formato R)
0

17

Ing. José Alberto Díaz García

18

8

0

0x20

—5


Slide 6

Instrucción de cargue


Formato de la instrucción Load/Store I (Formato I):

lw $t0, 24($s3)
35

19

8

2410 + $s3 =

2410
Memoria
0xFFFFFFFF

. . . 0001 1000 (24)D
$t0
+ . . . 1001 0100
$s3
. . . 1010 1100 =
0x120040AC

Ing. José Alberto Díaz García

0x120040AC
0x12004094

datos

0x0000000C
0x00000008
0x00000004
0x00000000
word address (hex)
—6


Slide 7

Instrucción de cargue


Considere la instrucción de cargue una palabra o
almacene una palabra
 ¿Qué significa aquí el principio de regularidad?




Se introduce un nuevo tipo de formato de instrucción




Pero . . . Un buen diseño demanda buenos compromisos

Tipo I para instrucciones de transferencia de datos)

Ejemplo: lw $t0, 24($s2)
op

rs

rt

16 numero de bits

23hex

18

8

100011

10010

01000

24
0000000000011000

¿Donde se presenta el compromiso?
Ing. José Alberto Díaz García

—7


Slide 8

Instrucción para almacenar


Ejemplo: sw $t0, 24($s2)
op



rs

43

18

101011

10010

rt

16 bit number

8

01000

24

0000000000011000

Un offset de 16 bits significa: acceso a las
posiciones de memoria en el rango de +213-1 a
-213 (~8,192) palabras o (+215-1 a -215 (~32,768)
bytes) de las direcciones en el registro base
$s2


Complemento a 2 (1 bit de signo + 15 bits de
magnitud)
Ing. José Alberto Díaz García

—8


Slide 9

Instrucciones inmediatas


¿Que tipo de formato utiliza la instrucción addi?
addi $s3, $s3, 4 #$s3 = $s3 + 4
op

8

rs

rt

19

19

16 bits inmediatos

Formato I

4



Formato máquina:



La constante se mantiene dentro de la misma
instrucción!


Los valores límites inmediatos se encuentran en el
rango +215–1 a -215
Ing. José Alberto Díaz García

—9


Slide 10

Código ensamblador


Para el código en C
A[8] = A[2] – b



Las instrucciones en código MIPS es

lw
sub
sw

$t0, 8($s3)
$t0, $t0, $s2
$t0, 32($s3)

#cargue A[2] en $t0
#substraiga b de A[2]
#almacene el resultado en A[8]

lw

35

19

8

sub

0

8

18

sw

43

19

8

Ing. José Alberto Díaz García

8

8

0

34

32

— 10