Доступ к отдельным битам в MIPS

Я пишу программу в MIPS, которая решает лабиринт, используя алгоритм правила левой руки. У меня уже написан мой алгоритм, но мне нужно найти способ отслеживать места в лабиринте, который я уже посетил, чтобы я мог найти «лучшее» и наиболее прямое решение для выхода из лабиринта.

В программе регистр $t9 представляет собой 32-битное число, в котором хранится информация о местоположении автомобиля, пересекающего лабиринт, включая положение столбца и строки, что мне и нужно изолировать. По сути, все, что мне нужно знать, это как работать/изолировать эти конкретные биты.

Биты 31-24 — это 8-битное число, представляющее строку в дополнении 2. Биты 23-16 — это 8-битное число, представляющее столбец в дополнении 2.

tl;dr Мне просто нужно извлечь первые 8 бит и следующие 8 бит из 32-битного числа, расположенного в $t9 в MIPS.

Спасибо!


person Nick Mullen    schedule 02.11.2016    source источник


Ответы (1)


Чтобы получить биты 31-24, выполните логический сдвиг вправо (SRL) на 24. Оставшееся число будет соответствовать значению этих битов, интерпретируемому как 8-битное целое число.

Чтобы получить биты 23-16, сдвиньте вправо на 16, затем И на 0xff.

Вы разберетесь с командами MIPS для этого?

person Seva Alekseyev    schedule 02.11.2016
comment
Вам не нужно маскировать 8 бит 32-битного значения, сдвинутого вправо на 24 бита - когда использовался логический сдвиг вправо, поскольку эти верхние 24 бита все равно были заполнены нулем. - person Ped7g; 02.11.2016