Idea Transcript
Arquitectura de Computadores
Sub-conjunto de instruções do MIPS Grupo
Transferência de informação
Operações aritméticas
Operações lógicas e de comparação
Operações de deslocamento de bits
Instruções de salto
Excepção
Sintaxe lb lw lbu sb sw lui mfhi mflo mthi mtlo li la move add addi addu addiu sub subu mult multu div divu abs mul div rem and andi or ori xor xori nor slt slti sltu sltiu not sll srl sra rol ror j jr beq bne bgez bgtz blez bltz jal jalr b b bu rfe syscall break
Rdest, Imm16(Rsrc) Rdest, Imm16(Rsrc) Rdest, Imm16(Rsrc) Rsrc2, Imm16(Rsrc1) Rsrc2, Imm16(Rsrc1) Rdest, Imm16 Rdest Rdest Rsrc Rsrc Rdest, Imm16/32 Rdest, address16/32 Rdest, Rsrc Rdest, Rsrc1, Rsrc2 Rdest, Rsrc1, Imm16 Rdest, Rsrc1, Rsrc2 Rdest, Rsrc1, Imm16 Rdest, Rsrc1, Rsrc2 Rdest, Rsrc1, Rsrc2 Rsrc1, Rsrc2 Rsrc1, Rsrc2 Rsrc1, Rsrc2 Rsrc1, Rsrc2 Rdest, Rsrc Rdest, Rsrc1, Rsrc2 Rdest, Rsrc1, Rsrc2 Rdest, Rsrc1, Rsrc2 Rdest, Rsrc1, Rsrc2 Rdest, Rsrc1, Imm16 Rdest, Rsrc1, Rsrc2 Rdest, Rsrc1, Imm16 Rdest, Rsrc1, Rsrc2 Rdest, Rsrc1, Imm16 Rdest, Rsrc1, Rsrc2 Rdest, Rsrc1, Rsrc2 Rdest, Rsrc1, Imm16 Rdest, Rsrc1, Rsrc2 Rdest, Rsrc1, Imm16 Rdest, Rsrc Rdest, Rsrc1, Shamt5 Rdest, Rsrc1, Shamt5 Rdest, Rsrc1, Shamt5 Rdest, Rsrc1, Rsrc2 Rdest, Rsrc1, Rsrc2 address28 Rsrc Rsrc1, Rsrc2, address18 Rsrc1, Rsrc2, address18 Rsrc, address18 Rsrc, address18 Rsrc, address18 Rsrc, address18 address28 Rsrc address18/32 Rsrc1, Rsrc2, address18/32 Rsrc1, Rsrc2, address18/32
code20
Tipo
Op
Func
Comentário
I I I I I I R R R R
0x20 0x23 0x24 0x28 0x2b 0x0f 00 00 00 00
0x10 0x12 0x11 0x13
R I R I R R R R R R
00 08 00 09 00 00 00 00 00 00
0x20 0x21 0x22 0x23 0x18 0x19 0x1a 0x1b
R I R I R I R R I R I
00 0x0c 00 0x0d 00 0x0e 00 00 0x0a 00 0x0b
0x24 0x25 0x26 0x27 0x2a 0x2b -
R R R
00 00 00
00 02 03
J R I I I I I I J R
02 00 04 05 01 07 06 01 03 00
08 01* 00* 09
R R R
0x10 00 00
0x20 0x0c 0x0d
load byte from memory load word from memory load unsigned byte from memory store byte to memory store word to memory load upper immediate move from hi move from lo move to hi move to lo load immediate load address move addition (with overflow) addition imm. (with ov.) addition (without overflow) addition imm. (without ov.) subtract (with overflow) subtract (without overflow) multiply unsigned multiply divide unsigned divide absolute value multiply divide remainder AND AND immediate OR OR immediate XOR XOR immediate NOR set if less than set if less than immediate set if less than unsigned set if less than unsigned imm. not shift left logical shift right logical shift right arithmetic rotate left rotate right jump (absolute addr) jump register branch on equal (relative addr) branch on not equal (relative addr) br. on greater than equal zero ( “ ” ) br. on greater than zero (“”) br. on less than equal zero (“”) br. on less than zero (“”) jump and link (absolute addr) jump and link register branch inconditional (relative addr) br. on = [gt, ge, lt, le] (“”) br. on = [gt, ge, lt, le] uns. ( “ ” ) return from exception system call break * especificado no campo rt
Formatos das instruções e exemplos Instrução add addi sw beq j
$a0, $t0, $s0 $8, $9, 0x100 $6, -4 ($7) $4, $5, 0x60 0x80000
JLSobral Set/2000
Tipo
Op/6 bits
Rs/5 bits
Rt/5 bits
Rd/5 bits
R I I I J
0 8 0x2b 4 2
8 ($t0) 9 7 4
0x10 ($s0) 8 6 5
4 ($a0)
0x20000 (0x80000/4)
Sa/5 bits 0 0x100 0xfffc (-4) 0x18 (0x60/4)
Func/6 bits 0x20
Arquitectura de Computadores
Convenção dos registos do MIPS Nome
Número
Utilização
$zero $v0-$v1
0
Constante 0 Valores para resultados e avaliação de expressões Argumentos Temporários Seguros Mais temporários Apontador global Apontador para pilha Apontador para a frame Endereço de retorno
$a0-$a3 $t0-$t7 $s0-$s7 $t8-$t9 $gp $sp $fp $ra
2-3 4-7 8-15 16-23 24-25 28 29 30 31
Preservado na chamada? n.a. Não Sim Não Sim Não Sim Sim Sim Sim
O registo 1 ($at) está reservado para o assemler, os registos 26-27 ($k0-$k1) estão reservados para o sistema operativo
JLSobral Set/2000