Instrucciones
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