Instrucciones

July 10, 2018 | Author: jarla | Category: Mips Instruction Set, Bit, Compiler, Computer Engineering, Computer Science
Share Embed Donate


Short Description

Download Instrucciones...

Description

00011010

Arquitectura de Computadores MIPS.

Grado de Ingeniería en Informática move

$a0,$2 addu $sp,$sp,32

ARQUITECTURA DE COMPUTADORES

01101001 011011 01101110 10 01000111 01001010

Instrucciones. 1. Introducción. 2. Inst Instru rucc ccio ione ness arit aritmé méti tica cas. s. 3. Instr Instruc ucci cion ones es de tra trans nsfe fere renc ncia ia de dat datos os.. 4. Repr Repres esen enta taci ción ón de las las inst instru rucc ccio ione nes. s. 5. Instru Instrucc ccio ione ness para para toma tomarr dec decis isio ione nes. s. 6. Procedimientos. 7. Constantes. 8. Dire Direcc ccio iona nami mien ento to en salt saltos os y  bifurcaciones. 9. Ejemplos. 1

00011010

Arquitectura de Computadores MIPS. 1. Introducción.

move

$a0,$2 addu $sp,$sp,32

01101001 011011 01101110 10 01000111 01001010

-Para dar órdenes al hardware del computador hay que hablar en su lenguaje. -Las instrucciones que utilizaremos provienen de la MIPS Computer Company. -Ejemplo de instrucción MIPS: add a, b, c #Suma las dos variables b y c ponga su suma en a. -Ejemplo: Hacer la siguiente suma: a=b+c+d+e add a, b, c # La suma de b y c se coloca en a. add a, a, d # La suma de b, c y d está ahora en a. add a, a, e # La suma de b, c, d y e está ahora en a. 2

00011010

Arquitectura de Computadores MIPS. 1. Introducción.

move

$a0,$2 addu $sp,$sp,32

01101001 011011 01101110 10 01000111 01001010

-Para dar órdenes al hardware del computador hay que hablar en su lenguaje. -Las instrucciones que utilizaremos provienen de la MIPS Computer Company. -Ejemplo de instrucción MIPS: add a, b, c #Suma las dos variables b y c ponga su suma en a. -Ejemplo: Hacer la siguiente suma: a=b+c+d+e add a, b, c # La suma de b y c se coloca en a. add a, a, d # La suma de b, c y d está ahora en a. add a, a, e # La suma de b, c, d y e está ahora en a. 2

00011010

Arquitectura de Computadores move

MIPS.

addu $sp,$sp,32

01101001 011011 01101110 10 01000111 01001010

2. Instrucciones aritméticas. Categoría

Aritmética

$a0,$2

Instrucción

Ejemplo

Significado

Comentario

Sumar

add a,b,c

a=b+c

Siempre 3 operandos

Restar

sub a,b,c

a=b-c

Siempre 3 operandos

Ejemplo. Se tiene la siguiente sentencia en lenguaje C que contiene cinco variables: f=(g+h)-(i+j) Solución Esta sentencia podría ser compilada en las tres instrucciones MIPS siguientes: add t0,g,h # La variable temporal t0 contienen g+h. add t1,i,j # La variable temporal t1 contiene i+j. sub f,t0,t1 # f es t0-t1, es decir (g+h)-(i+h)  Nota.- El compilador ha creado dos nuevas vbles t0 y t1. UCAM 2009-10

3

00011010

Arquitectura de Computadores move

MIPS.

$a0,$2 addu $sp,$sp,32

Registros de MIPS y convenio de utilización

01101001 01101110 01000111 01001010

Nombre

Número

Utilización

$zero

0

Constante 0

$at

1

Reservado por el ensamblador

$k0 y $k1

26 y 27

Reservado por el sistema operativo

$v0 y $v1

2y3

Paso de valores entre funciones

$a0..$a3

4..7

Paso de argumentos a las rutinas (el resto se pasan a la pila)

$t0..$t9

8..15, 24 y 25

Temporal (no necesitan ser preservado en la llamada)

$s0..$s7

16..23

Guardado temporalmente (preservado a través de llamada)

$gp

28

Púntero de área global

$sp

29

Puntero de pila (apunta a la primera posición libre)

$fp

30

Puntero de encuadre

$ra

31

Dirección de vuelta de una llamada de procedimiento

00011010

Arquitectura de Computadores move

MIPS.

$a0,$2 addu $sp,$sp,32

2. Instrucciones aritméticas.

01101001 01101110 01000111 01001010

Los operandos de las instrucciones aritméticas no pueden ser variables cualesquiera, deben proceder de una serie limitada de posiciones especiales denominadas registros. El tamaño de un registro en la arquitectura MIPS es de 32 bits. MIPS tiene 32 registros: $0, $1,...,$31.

En el ejemplo anterior, si se le asignan los registros $16, $17, $18, $19 y $20 a las variables f, g, h, i, y j respectivamente, tenemos: add $8,$17,$18 add $9,$19,$20 Sub $16,$8,$9

UCAM 2009-10

5

00011010

Arquitectura de Computadores move

MIPS.

$a0,$2 addu $sp,$sp,32

3. Instrucciones de transferencia de datos.

01101001 01101110 01000111 01001010

Las operaciones aritméticas sólo se realizan en los registros, por lo que existen instrucciones que transfieren datos entre la memoria y los registros. A estas instrucciones se las denominan instrucciones de transferencia de datos. Ejemplo lw -> cargar palabra (load word).

Categoría

Transferencia de datos

Instrucción

Ejemplo

Significado

Comentario

Cargar  palabra

lw $1,100($2) $1=Memoria[$2+100] Dato de memoria a registro

Almacenar  palabra

sw $1,100($2) Memoria[$2+100]=$1 Dato de registro a memoria

6

00011010

Arquitectura de Computadores move

MIPS.

$a0,$2 addu $sp,$sp,32

3. Instrucciones de transferencia de datos.

01101001 01101110 01000111 01001010

Ejemplo: Suponer que A es un array y que el compilador tiene asociadas las vbles g, h e i a los registros $17, $18 y $19. Supongamos también que el array comienza en la dirección 100. Traducir la siguiente sentencia C: g=h+A[i]

 Nota.- utilizar $8 como registro temporal ($t0). Solución: lw $8,100($19) add $17,$18,$8

# El reg temporal $8 obtiene A[i] # g=h+A[i] 7

00011010

Arquitectura de Computadores move

MIPS.

$a0,$2 addu $sp,$sp,32

3. Instrucciones de transferencia de datos.

01101001 01101110 01000111 01001010

Ejemplo: Con los mismos datos que el ejemplo anterior... ¿cuál es el código ensamblador MIPS para la siguiente instrucción C? A[i]=h+A[i]

Solución: lw $8,100($19) add $8,$18,$8 sw $8,100($19)

# El reg temporal $8 obtiene A[i] # El reg temporal $8 obtiene h+A[i] # Almacena h+A[i] en A[i] 8

00011010

Arquitectura de Computadores move

MIPS.

$a0,$2 addu $sp,$sp,32

01101001 01101110 01000111 01001010

4. Representación de las instrucciones. Instrucción MIPS: Tipo R (Registro).

op

rs

rt

rd

shamt

funct

6 bits

5 bits

5 bits

5 bits

5 bits

6 bits

op.- operación de la instrucción. rs.- primer registro del operando fuente. rt.- segundo registro del operando fuente. rd.- registro del operando destino. Obtiene el resultado de la operación. shamt.- Cantidad de desplazamiento. funct.- (función), este campo selecciona la variante de la operación del campo op.

9

00011010

Arquitectura de Computadores move

MIPS.

$a0,$2 addu $sp,$sp,32

01101001 01101110 01000111 01001010

4. Representación de las instrucciones.

Ejemplo: add $8,$17,$18

op

rs

rt

rd

shamt

funct

6 bits

5 bits

5 bits

5 bits

5 bits

6 bits

0

17

18

8

0

32

000000

10001

10010

01000

00000

100000

10

00011010

Arquitectura de Computadores move

MIPS.

$a0,$2 addu $sp,$sp,32

4. Representación de las instrucciones.

01101001 01101110 01000111 01001010

Instrucción MIPS: Tipo I (Instrucciones de transf. de datos).

op

rs

rt

dirección

6 bits

5 bits

5 bits

16 bits

11

00011010

Arquitectura de Computadores move

MIPS.

$a0,$2 addu $sp,$sp,32

01101001 01101110 01000111 01001010

4. Representación de las instrucciones. Codificación de instrucciones MIPS: Instr.

Formato

op

rs

rt

rd

shamt funct

dirección

add

R

0

reg

reg

reg

0

32

n.a.

add

R

0

reg

reg

reg

0

34

n.a.

lw

I

35

reg

reg

n.a.

n.a.

n.a.

dirección

sw

I

43

reg

reg

n.a.

n.a.

n.a.

dirección

Ejemplo: Sigamos con nuestro ejemplo anterior... Suponiendo que el registro $19 tiene el valor 4 x i, la sentencia en C: A[i]=h+A[i] se compila en... lw $8,1200($19) # El reg temporal $8 obtiene A[i] add $8,$18,$8 # El reg temporal $8 obtiene h+A[i] sw $8,1200($19) # Almacena h+A[i] en A[i] ¿Cuál es el código del lenguaje máquina MIPS para estas tres instrucciones? 12  Nota.- Dirección de comienzo del array A (120010) es 0000 0100 1011 0000

00011010

Arquitectura de Computadores move

MIPS.

$a0,$2 addu $sp,$sp,32

01101001 01101110 01000111 01001010

4. Representación de las instrucciones. Solución: Op

Rs

Rt

Lw

35

19

8

Add

0

18

8

sw

43

19

8

1200

0000 0100 1011 0000

100011

10011

01000

000000

10010

01000

101011

10011

01000

(Rd)

(shamt)

Dirección/funct

1200 8

01000

0

0000

32

100000

0000 0100 1011 0000 13

00011010

Arquitectura de Computadores move

MIPS.

addu $sp,$sp,32

5. Instrucciones para tomar decisiones. Categoría

Salto condicional

Bifurcación incondicional

$a0,$2

01101001 01101110 01000111 01001010

Instrucción

Ejemplo

Significado

Comentario

Saltar si igual

 beq $1,$2,L

Si ($1==$2) ir a L

Test de igual y salta

Saltar si no igual

 bne $1,$2,L

Si ($1!=$2) ir a L

Test de no igual y salta

Inic. si menor 

slt $1,$2,$3

Si ($2=n) # Cuerpo del primer bucle for 

Incremento

addi $19,$19,1  j salida1:

# i=i+1

cont1

33

00011010

Arquitectura de Computadores move

MIPS.

$a0,$2 addu $sp,$sp,32

9. Ejemplos. Ej 2. Solución. Bucle interno:

01101001 01101110 01000111 01001010

for (j=i-1; j>=0 && v[j]>v[j+1]; j=j-1) { Inicialización Seguir mientras (Y)

Decremento

addi $17,$19,-1 # j=i-1 cont2: # Primera condición del bucle slti $8,$17,0 # reg $8=1 si $17
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF