内核如何在 MIPS 中存储用户输入的读取字符串?

How does the kernel stores the read string input from the user in MIPS?

从键盘读取和存储字符串输入的指令在 MIPS 中不明确。读取的字符串如何放入标签命名空间?

.data
    namespace: .space 20
.txt
    li $v0,8
    la $a0,namespace
    li $a1,20
    syscall

内核可以使用 user-space 内存映射和地址,您将 $a0 中的地址传递给它。您还在 $a1 中传递了缓冲区长度,因此它知道允许存储多少字节。

因此内核从I/O设备获取数据,然后使用swsb指令将其存储到您传递的缓冲区中。

(或者,如果您使用的是 MARS / SPIM,syscall 会陷入解释器/仿真器/模拟器代码,并且根本不是 运行 MIPS 指令。与真正的 MIPS 机器不同运行 Linux 或其他。)