我正在使用 MIPS 和 MARS 模拟器学习汇编语言的基础。标题包含了我的问题,但我会尝试用一个例子来扩展它。假设我们想从键盘读取一个字符串(最多 200 个字符)。我们必须有办法进行
1)我们在静态数据段上分配201个字节,做系统调用读取字符串,然后通过“字符串”地址引用它
.data
string: .space 201
.text
li $v0, 8
la $a0, string
li $a1, 201
syscall
2)我们通过 sbrk 函数(MARS 上唯一可用的)请求堆上的 201 个连续字节,然后用输入字符串填充它们。
li $v0, 9
la $a0, 201
syscall
move $s0, $v0
li $v0, 8
move $a0, $s0
li $a1, 201
syscall
两种方法的优缺点是什么?我总是在 MIPS 示例中看到第一种方法,但我不明白为什么不使用第二种方法。
提前致谢 :)