Получение MSB 32-битного целого числа в MIPS - PullRequest
1 голос
/ 26 сентября 2011

Есть ли способ найти MSB 32-битного целого числа в MIPS и затем заменить его на младший бит другого целого числа?

Для уточнения предположим, что A = 1000 и B = 1001

Мне нужно получить MSB B, т.е. 1, и поменять его местами с LSB A. Теперь A должно стать 1001.

1 Ответ

2 голосов
/ 29 сентября 2011
# 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

Сборка это весело!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...