You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MARS MIPS CLI调用读字符系统调用时不接受换行符报错问题

MARS CLI中syscall 12报错的原因及解决方法

问题根源

MARS的GUI IDE和命令行(CLI)版本对syscall 12(单字符读取系统调用)的行为存在差异:

  • 在GUI环境下,syscall 12会捕获所有输入字符,包括换行符(Enter键对应的ASCII值0x0A),所以你按下Enter时程序能正常读取并打印换行。
  • 但在CLI模式下,syscall 12的逻辑是仅读取非空白字符,并且会自动跳过开头的空白字符(如空格、换行)。如果你的输入只有空白字符(比如直接按Enter),它找不到符合要求的有效字符,就会抛出invalid char input (syscall 12)错误。

解决办法

如果需要在CLI中处理换行或空白字符,可以改用syscall 8(字符串读取)来替代syscall 12,因为它能读取包括换行在内的任意字符。修改你的宏如下:

.macro read_char
    li $v0, 8
    la $a0, ($s0)
    li $a1, 2  # 最多读取1个字符+字符串终止符
    syscall
.end_macro

这个修改后,即使在CLI中直接按Enter,程序也能正确读取换行符并完成打印。

内容的提问来源于stack exchange,提问作者akzxtuallyyy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 06:42:39