Para cada código de máquina a seguir, indique a correspondente instrução em MIPS: 0 \times 25280001
i. addiu t0,t1, 1
ii. addi s0,s1, 1
iii. addi t1,t0, 1
Passo 1
O enunciado dá o código de máquina \text{0x25280001} e pede para indicar qual das três instruções MIPS corresponde:
i. \text{addiu }\$t0,\\ \$t1,\\\ 1
ii. \text{addi }\$s0,\\ \$s1,\\\ 1
iii. \text{addi }\$t1,\\ \$t0,\\\ 1
Lista das informações relevantes: o código de máquina de 32 bits \text{0x25280001} e as três alternativas a serem comparadas. A tarefa é decodificar esse código e ver qual alternativa bate.
Passo 2
Breve explicação do formato que vamos usar (aulas rápidas, tipo “cola” para prova). Instruções imediatas (I-type) em MIPS têm o formato de 32 bits dividido em campos:
Aqui \text{opcode} indica a operação (por exemplo \text{addi} ou \text{addiu}), \text{rs} é o registrador fonte, \text{rt} é o registrador destino (ou segundo operando dependendo da convenção), e \text{immediate} é o valor imediato de 16 bits. Vamos separar esses campos no código dado.
Passo 3
Converter \text{0x25280001} para binário. Quebrando em bytes:
Agora cada campo será convertido para decimal/hex e interpretado.
Passo 5
Converter os campos:
\text{opcode} = 001001_2 = 9_{10}.
\text{rs} = 01001_2 = 9_{10}.
\text{rt} = 01000_2 = 8_{10}.
\text{immediate} = 0000000000000001_2 = 1_{10} (também é \text{0x0001}).
Mapeamento de índices de registrador (coisa que cai muito em prova): \$t0 tem índice 8, \$t1 tem índice 9, \$s0 tem índice 16, \$s1 tem índice 17. Portanto rs=9 é \$t1 e rt=8 é \$t0.
Passo 6
Interpretar o opcode: o opcode 9 em MIPS corresponde à instrução \text{addiu} (add immediate unsigned). Observação didática rápida: \text{addi} tem opcode 8, \text{addiu} tem opcode 9. A diferença prática é que \text{addiu} não provoca exceção de overflow (útil em muitas situações); para decodificação basta o opcode. Assim o formato decodificado é:
\text{addiu }\$t0,\\ \$t1,\\\ 1
onde o campo \text{rs}=\$t1, \text{rt}=\$t0 e \text{immediate}=1.
Passo 7
Comparar com as alternativas: a alternativa i. é exatamente \text{addiu }\$t0,\\ \$t1,\\\ 1. As alternativas ii. e iii. não batem (ii. usa \$s0,\$s1; iii. troca registros e usa \text{addi} em vez de \text{addiu}). Logo a correta é a alternativa i.