MIPS: преобразование шестнадцатеричного числа в 32-разрядное двоичное - PullRequest
0 голосов
/ 10 ноября 2019

Я новичок в MIPS. Я пытаюсь преобразовать введенные пользователем шестнадцатеричные значения в 32-разрядное двоичное число и сохранить его в массиве. Вот что я думаю: например, число (3ABCD123), затем я читаю это значение, разбиваю каждый символ и помещаю его в строковый массив. Затем для каждого значения в массиве преобразуйте его в 4-разрядное двоичное число и сохраните в другом массиве. Но я застрял на разделении введенной пользователем строки на каждый символ и сохранении ее в массиве. Пожалуйста, дайте какие-либо предложения или помощь, спасибо!

1 Ответ

0 голосов
/ 10 ноября 2019

MARS / SPIM имеют системный вызов строкового ввода (https://www.doc.ic.ac.uk/lab/secondyear/spim/node8.html). Строка - это массив символов; вам не нужно ничего "разбивать" вручную, пока вы не зациклилисьвходной буфер с lbu. (И системный вызов возвращает длину).

Затем вы захотите проверить ввод, чтобы проверить, что это шестнадцатеричная цифра, и вычислить 4-битное целое число.

Вы не хотите хранить отдельные 4-битные значения в каком-либо массиве, сдвигайте + ИЛИ их в 32-битный регистр, чтобы получить итоговое 32-битное целое число. целое слово в массив и чтение другой строки.

(MIPS адресуется по байтам, поэтому вы можете хранить куски по 2 куска, но это не суббайтная адресация, поэтому вы не можете sb 8 отдельных кусковв 4 байта и lw полное 32-битное слово.)

...