以MIPS获得32位整数的MSB

时间:2011-09-26 00:33:10

标签: mips

有没有办法在MIPS中找到32位整数的MSB,然后将其替换为另一个整数的LSB?

详细说明,假设A = 1000且B = 1001

我需要获得B的MSB即1并将其与A的LSB交换。现在A应该变为1001.

1 个答案:

答案 0 :(得分:2)

# Integer 1 -> $a0
# Integer 2 -> $a1
# Result -> $a3
# Setting up retreiving mask
xor     $t0, $t0, $t0
lui     $t0, 0x8000

# Extracting MSB
and     $t1, $a0, $t0

# Moving MSB to LSB
srl     $t1, $t1, 31

# Setting up setting mask
xor     $t0, $t0, $t0
li      $t0, 0x0001

# Applying r = a ^ ((a ^ b) & mask)
# a = $a1
# b = $t1
# mask = $t0
xor     $t2, $a1, $t1
and     $t2, $t2, $t0
xor     $a3, $a1, $t2

装配很有趣!

相关问题