【发布时间】:2019-11-10 05:54:11
【问题描述】:
我是 MIPS 的初学者。我试图弄清楚将用户输入的十六进制值转换为 32 位二进制数,并将其存储到数组中。这是我的想法:例如,数字是(3ABCD123),然后我读取这个值并将每个字符拆分并放入一个字符串数组中。然后,对于数组中的每个值,将其转换为 4 位二进制数并将其存储到另一个数组中。但是我坚持将用户输入的字符串拆分为每个字符并将其存储在一个数组中。有什么建议或者帮助,谢谢!
【问题讨论】:
我是 MIPS 的初学者。我试图弄清楚将用户输入的十六进制值转换为 32 位二进制数,并将其存储到数组中。这是我的想法:例如,数字是(3ABCD123),然后我读取这个值并将每个字符拆分并放入一个字符串数组中。然后,对于数组中的每个值,将其转换为 4 位二进制数并将其存储到另一个数组中。但是我坚持将用户输入的字符串拆分为每个字符并将其存储在一个数组中。有什么建议或者帮助,谢谢!
【问题讨论】:
MARS/SPIM 有一个字符串输入系统调用 (https://www.doc.ic.ac.uk/lab/secondyear/spim/node8.html)。一个字符串是一个字符数组;在使用lbu 循环输入缓冲区之前,您不必手动“拆分”任何内容。 (系统调用返回长度)。
然后您需要验证输入以检查它是否为十六进制数字,并计算一个 4 位整数。
您不想在任何数组中存储单独的 4 位值; shift + OR 将它们放入一个 32 位寄存器,以构建最终的 32 位整数。只有当你拥有它之后,你才应该将整个单词存储到一个数组中并读取另一个字符串。
(MIPS 是字节可寻址的,因此您可以存储在 2 个半字节的块中,但它不是子字节可寻址的,因此您不能 sb 8 个单独的半字节分成 4 个字节和 lw 一个完整的 32 位字.)
【讨论】: