lenguaje assembler ejemplos
a) El primer bit es 1, lo que indica que se trata de un número negativo.
1010 1111 1110 1111 1100 0000 0000 0000
Pasar a complemento a 1
0101 0000 0001 0000 0011 1111 1111 1111 +1
Sumar 1 para complemento a 2
0101 0000 0001 0000 0100 0000 0000 0000
2^30 + 2^28 + 2^20 + 2^14 = 1.343.242.240 y como es negativo, la respuesta definitiva es
-1.343.242.240
b)Entero sin signo (hay que considerar los 32 bits)
2^31 + 2^29 + 2^27 + 2^26 + 2^25 + 2^24 + 2^23 + 2^22 + 2^21 + 2^19 + 2^18 + 2^17 +
2^16 + 2^15 + 2^14 = 2.951.725.056
c) Suponiendo quees una instrucción MIPS
101011 11111 01111 1100 0000 0000 0000
Opcode 43 = sw formato l
rs = 31
rt = 15
address = 1100 0000 0000 0000
0011 1111 1111 1111
2^14 = 16384 pero consigno negativo
Por lo tanto se trata se la sentencia
sw $t7, -16384($ra)
2.
K1 = 0000 0000 1000 0000
2^7 = 128
0000 0000 0000 0000
0
K2 = 0000 0000 0000 0001
1
0000 00001000 0000
2^7 = 128
lui $s0, 128
lui $s1, 1
addi $s1, $s1, 128
add $s0, $s0, $s1
# $s0 = K1 pues el resto es cero
# pone 1 en la mitad superior de $s1
# completa el registro $s1= 1 … 128 = 65664 = K2
# $s0 = K1 + K2
3. Tiempo de ejecución después de la mejora =
= Tiempo de ejec. afectado por la mejora / Cantidad de mejora) + Tiempo de ejec. no afectado
=(2,5 * (25% de 10) / 5) + 7,5 * (75% de 10) = 8 segundos.
La mejora será: 10 / 8 = 1,25
4. Una forma posible (porque hay otras formas), que tiene un mínimo de líneas es:
beq $t1,$t2, suma
slt $a0, $t1, $t2
bne $a0, $zero, resta
sub $a0, $t1, $t2
j exit
suma: add $a0, $t1, $t2
resta: sub $a0, $t2, $t1
exit:
# si $t1 = $t2 salta a suma; sino sigue
# si $t1< $t2, $a0 = 1; sino $a0 = 0
# si $a0≠0 salta a resta, sólo hace la resta y termina el programa;
# sino sigue
# $a0 = $t1 - $t2 porque $t1 es mayor que $t2
# termina el programa.
Regístrate para leer el documento completo.