Beruflich Dokumente
Kultur Dokumente
Resolução:
Para:
FFFFFFFF
FFFFF 2k FFFFF800
FFFF 2k FF800
3FFF 2k F800
2k 3800
-1-
2. Para o seguinte código comente as instruções e identifique o que fazem
escrevendo o seu equivalente em C:
add $t0, $zero, $zero
loop: beq $a1, $zero, finish
add $t0, $t0, $a0
sub $a1, $a1, 1
j loop
finish: addi $t0, $t0, 100
add $v0, $t0, $zero
Resolução:
Em C temos:
v=a0*a1
-2-
3. Depois da execução do seguinte código, qual o valor de $s0 e $s1 em decimal?
(lb significa load byte neste caso apenas lê um byte de um conteúdo de
memória). Considere números com sinal:
Resolução:
$s0=0F
$s1=FF
-3-
4. Para cada instrução do programa abaixo identifique os formatos de codificação e
os modos de endereçamento.
Resolução:
formato: R
endereçamento: por registo, pois os operandos são registos
formato: I
endereçamento: Relativo ao PC, pois o operando é especificado pela
soma de um registo com o PC, cujo endereço corresponde ao
especificado por finish
formato: I
endereçamento: Relativo à Base(registo) , pois o operando é especificado
pela soma de um registo com uma constante, neste caso $a0+100
-4-
5. Qual o intervalo de endereços para um salto condicional no MIPS?
Resolução:
Uma instrução de salto condicional significa que o salto só se toma caso uma expressão
(de comparação) seja verdadeira. A não tomada da salto significa que a execução do
programa continua na próxima instrução (PC+4). A tomada do salto significa que a
próxima instrução a ser executada está localizada em PC+4+deslocamento, em que o
valor do deslocamento é o um número com sinal de 16 bits. Um valor negativo do
deslocamento representa salto no sentido decrescente dos endereços e um valor positivo
representa um salto no sentido crescente dos endereços da memória de programa.
Para o cálculo dos endereços é preciso saber qual o espaço para representar esse
valor no formato da instrução. Neste caso esse espaço é de 16 bits, assim com uma
representação de números com sinal em complementos de 2, temos um intervalo entre os
valores:
1000 0000 0000 0000 -32 768, que corresponde ao maior numero negativo
0111 1111 1111 1111 +32 767, que corresponde ao maior numero positivo
-5-
7. A execução de um programa numa determinada máquina só pode ser efectuada
se esse programa se apresentar ao microprocessador dessa máquina na sua
linguagem nativa. Esclareça os diferentes passos desde a escrita do código fonte
até á sua execução pela máquina, considere a linguagem C. Compare com escrita
e execução na plataforma .NET
Resolução:
-6-
8. Para o seguinte programa explique a operação que é efectuada em cada estado
do pipeline.
lw r1, 0(r0)
lw r2, 1(r0)
add r3, r1, r2
beq r1, r2, salto
j rotina
sw 2(r0), r3
Resolução:
-7-
9. Considere o datapath da figura de ciclo simples
0
M
Add u
x
ALU 1
4 Add
result
Shift
RegDst left 2
Branch
MemRead
Instruction [31–26] MemtoReg
Control
ALUOp
MemWrite
ALUSrc
RegWrite
Instruction [5–0]
-8-
Resolução:
e.
Instrução ResDst ALUSrc MemtoReg RegWrite MemRead MemWrite Branch
lw $t0, 0($t1) 0 1 1 1 1 0 0
sw $v1, 0($a1) x 1 x 0 0 1 0
-9-