Академический Документы
Профессиональный Документы
Культура Документы
1. Caractersticas RISC de MIPS64 2. Registros y memoria 3. Instrucciones enteras 4. Instrucciones de coma flotante 5. El ensamblador utilizado en prcticas 6. Ejemplos de cdigo
2
Hay muchas implementaciones de MIPS. La descrita a continuacin es una versin reducida que coincide con la utilizada por el simulador de las prcticas. As mismo, se han simplificado muchos aspectos de la arquitectura para facilitar su comprensin.
2. Registros y memoria
Registros y memoria
Registros de Propsito General (GPR)
Cableado a cero R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 Direccin de retorno R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29 R30 R31 F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30 F31
Todos de 64 bits!
6
Registros y memoria
q Bus de datos de 64 bits. q Permite accesos a memoria en cuatro longitudes diferentes: Byte (8 bits) Media Palabra (16 bits) Palabra (32 bits) Doble Palabra (64 bits)
Media Palabra Byte
Registros y memoria
Organizacin de la memoria
q Orden de los octetos Big-endian Little-endian
Big-endian
Dir. Palabras 12 Dir. Altas 8 4 Dir. Bajas 0 Bits
31 24 23 16 15 8 7 0
12 8 4 0
13 9 5 1
14 10 6 2
15 11 7 3
8
Registros y memoria
Organizacin de la memoria
Little-endian
Dir. Palabras 12 Dir. Altas 8 4 Dir. Bajas 0 Bits
31 24 23 16 15 8 7 0
15 11 7 3
14 10 6 2
13 9 5 1
12 8 4 0
Registros y memoria
Organizacin de la memoria
Alineacin
Los accesos de 8, 16, 32 y 64 bits tienen las restricciones siguientes: Las medias palabras deben comenzar en frontera para (0, 2, 4, ) Las palabras deben comenzar en direcciones divisibles por 4 (0, 4, 8, ) Las dobles palabras deben comenzar en direcciones divisibles por 8 (0, 8, 16, )
10
3. Instrucciones enteras
11
Instrucciones enteras
INSTRUCCIONES DE LECTURA DE MEMORIA
Instruccin
lb Rt,offset(Rs) lbu Rt,offset(Rs) lh Rt,offset(Rs) lhu Rt,offset(Rs) lw Rt,offset(Rs) lwu Rt,offset(Rs) ld Rt,offset(Rs)
Operacin Rt [0..7] = MEM [Rs + offset] Rt [0..7] = MEM [Rs + offset] Rt [0..15] = MEM [Rs + offset] Rt [0..15] = MEM [Rs + offset] Rt [0..31] = MEM [Rs + offset] Rt [0..31] = MEM [Rs + offset] Rt [0..63] = MEM [Rs + offset]
Comentario Lectura de 1 octeto con extensin de signo Lectura de 1 octeto sin extensin de signo Lectura de media palabra (16 bits) con extensin de signo Lectura de media palabra (16 bits) sin extensin de signo Lectura de una palabra (32 bits) con extensin signo Lectura de una palabra (32 bits) sin extensin signo Lectura de una doble palabra (64 bits)
12
Instrucciones enteras
Operacin MEM [Rs + offset] = Rt [0..7] MEM [Rs + offset] = Rt [0..15] MEM [Rs + offset] = Rt [0..31] MEM [Rs + offset] = Rt [0..63]
Comentario Escritura de un octeto Escritura de media palabra (16 bits) Escritura de una palabra (32 bits) Escritura de una doble palabra (64 bits)
13
Instrucciones enteras
INSTRUCCIONES ARITMTICAS
Instruccin
dadd Rd,Rs,Rt daddu Rd,Rs,Rt daddi Rd,Rs,imm daddui Rd,Rs,imm dsub Rd,Rs,Rt dsubu Rd,Rs,Rt dmul Rd,Rs,Rt dmulu Rd,Rs,Rt ddiv Rd,Rs,Rt ddviu Rd,Rs,Rt
Comentario Con desbordamiento (trap) Sin desbordamiento Con desbordamiento (trap) Sin desbordamiento Con desbordamiento (trap) Sin desbordamiento Con desbordamiento (trap) Sin desbordamiento Con desbordamiento (trap) Sin desbordamiento
14
Instrucciones enteras
INSTRUCCIONES LGICAS
Instruccin
and Rd,Rs,Rt andi Rt,Rs,imm or Rd,Rs,Rt ori Rt,Rs,imm xor Rd,Rs,Rt xori Rt,Rs,imm
15
Instrucciones enteras
INSTRUCCIONES DE DESPLAZAMIENTO
Instruccin
dsllv Rd,Rt,Rs dsll Rd,Rt,imm dsrlv Rd,Rt,Rs dsrl Rd,Rt,imm dsrav Rd,Rt,Rs dsra Rd,Rt,imm
Operacin Rd = Rt << Rs Rd = Rt << imm Rd = Rt >> Rs Rd = Rt >> imm Rd = Rt >> Rs Rd = Rt >> imm
Comentario Desplazamiento lgico a izda. Slo se utilizan los bits 0..5 de Rs Desplazamiento lgico a Izda. Desplazamiento lgico a dcha. Slo se utilizan los bits 0..5 de Rs Desplazamiento lgico a Dcha. Desplazamiento aritm. a dcha. Slo se utilizan los bits 0..5 de Rs Desplazamiento aritm. a Dcha.
16
Instrucciones enteras
INSTRUCCIONES DE COMPARACIN
Instruccin
slt Rd,Rs,Rt sltu Rd,Rs,Rt slti Rt,Rs,imm sltiu Rt,Rs,imm
Comentario Comparacin entera con signo Comparacin entera sin signo Sin desbordamiento
17
Instrucciones enteras
Comentario El salto est restringido a una zona de 128 KB El salto est restringido a una zona de 128 KB. El salto est restringido a una zona de 128 KB. El salto est restringido a una zona de 128 KB.
18
Instrucciones enteras
Comentario El salto est restringido a una zona de 256 MB Almacena la direccin de retorno (PC+8) en R31 La direccin de salto debe estar alineada Almacena la direccin de retorno en R31
jr Rs
jalr Rs
19
Instrucciones enteras
OTRAS INSTRUCCIONES
Instruccin
lui Rt,imm movz Rd,Rs,Rt movn Rd,Rs,Rt nop
20
21
Comentario Lectura de una doble palabra (64 bits) Escritura de una doble palabra (64 bits)
22
INSTRUCCIONES ARITMTICAS
Instruccin
add.d Fd,Fs,Ft sub.d Fd,Fs,Ft mul.d Fd,Fs,Ft div.d Fd,Fs,Ft
Operacin Fd = Fs + Ft Fd = Fs - Ft Fd = Fs * Ft Fd = Fs / Ft
Comentario Varias excepciones de la unidad de coma flotante (FPU) Varias excepciones de la unidad de coma flotante (FPU) Varias excepciones de la unidad de coma flotante (FPU) Varias excepciones de la unidad de coma flotante (FPU)
23
INSTRUCCIONES DE COMPARACIN
Instruccin
c.lt.d Fs,Ft c.le.d Fs,Ft c.eq.d Fs,Ft
Comentario CC es un bit de la unidad de coma flotante CC es un bit de la unidad de coma flotante CC es un bit de la unidad de coma flotante
24
Comentario El salto est restringido a una zona de 128 KB El salto est restringido a una zona de 128 KB
25
OTRAS INSTRUCCIONES
Instruccin
mtc1 Rt,Fs mfc1 Rt,Fs mov.d Fd,Fs cvt.d.l Fd,Fs cvt.l.d Fd,Fs
Comentario
Con extensin de signo No genera ninguna excepcin Varias excepciones de la unidad de coma flotante (FPU) Varias excepciones de la unidad de coma flotante (FPU)
26
27
Datos
Pregunta: .ascii Introducir n>\0 Num: Car: .text .word 8 .byte 0x0D
Cdigo
Comienzo:
28
Desripcin Comienzo de cdigo Comienzo de datos Direccin de comienzo de ensamblaje Reserva N octetos de memoria Inicializa una zona de memoria con STRING Idntica a .ascii aadiendo un carcter NULL al final Inicializa una zona de memoria con dobles palabras (64 bits) Inicializa una zona de memoria con octetos Inicializa una zona de memoria con medias palabras (16 bits) Inicializa una zona de memoria con palabras (32 bits) Inicializa una zona de memoria con nmeros en coma flotante
29
PROGRAMA
DATOS ; Este .data X: Y: Z: .text Etiquetas INICIO: Instrucciones ld ld dadd sd halt r1,Y(r0) r2,Z(r0) r3,r1,r2 r3,X(r0) Comentarios ; Carga en r1 el valor de la var. Y (64 bits) ; Carga en r2 el valor de la var. Z (64 bits) ; Realiza la suma de r1 y r2 ; Almacena en la var. X el valor de r3 (64 bits) ; Para el procesador (Fin del programa) programa calcula la expresin X = Y + Z .word 0x0 ; en Hexadecimal .word 0x012345678901234567 ; en Hexadecimal .word 10 ; en Decimal CDIGO
FIN:
30
6. Ejemplos de cdigo
31
MIPS64
.data i: d: c: vector: S: .word32 .double .byte .word32 .word16 0 0.0 0 0,0,0,0,0 0
32
MIPS64
.data i: .text .word32 0
33
MIPS64
.data i: j: k: .text daddi sw daddi sw IF: slt beqz daddi sw j IFELSE: daddi sw IFEND: halt R3,R0,10 ; i en R3 R3,i(R0) R4,R0,20 ; j en R4 R4,j(R0) R8,R3,R4 R8, IFELSE R10,R0,1 R10,k(R0) IFEND R12,R0,2 R12,k(R0) .word32 .word32 .word32 0 0 0
34
MIPS64
.data i: .word32 vector: .word32 .text daddi daddi FOR: slt beqz daddi dmul sw daddi j ENDFOR: halt R2,R0,10 ; tamao R4,R0,0 ; i en R4 R7,R4,R2 R7,ENDFOR R11,R0,4 R12,R11,R4 R4,vector(R12) R4,R4,1 FOR 0 0,0,0,0,0,0,0,0,0,0
35
MIPS64
.data vector: .word32 .text FOR: daddi daddi daddi dmul sw bnez halt R1,R0,10 ;R1=indice R2,R0,4 R1,R1,-1 R3,R1,R2 ;R3=indice*4 R1,vector(R3) R1,FOR 0,0,0,0,0,0,0,0,0,0
36