Questão 19. Conteúdo do endereço acessado na linha S: Valor de $t5, que era $t3 << 2, e como $t3 = 3, então $t5 = 12, ou seja, 0x0000000c
Passo 1
O enunciado pergunta qual é o conteúdo do endereço acessado na linha S. As informações fornecidas são:
foi definido como
.
.
Queremos então o valor final que está em (que é o endereço acessado em S).
Queremos então o valor final que está em
Passo 2
O operador
é o deslocamento lógico à esquerda (left shift). Para inteiros, deslocar à esquerda por
bits é equivalente a multiplicar por
, desde que não haja overflow. Em fórmula:
Aqui
é o valor inteiro (conteúdo de um registrador) e
é o número de bits a deslocar. No nosso caso
.
Passo 3
Uma forma intuitiva de ver o efeito é em binário. O valor
em binário (considerando 32 bits) é
Deslocando duas posições à esquerda:
que corresponde a um valor maior (os bits “andaram” para a esquerda), sem perda aqui porque o número é pequeno.
Passo 4
Aplicando a regra de multiplicação:
Calculemos:
Portanto, o valor decimal em
é
.
Passo 5
Agora convertemos
(decimal) para hexadecimal. Como
, ele corresponde a um único dígito hexadecimal:
Em notação usual de 32 bits representamos números hexadecimais com 8 dígitos (padding com zeros à esquerda). Assim a representação hexadecimal de 32 bits fica com zeros à esquerda.
Resposta
0x0000000c