如果我在 MIPS32 程序集中将 space 保留为 .space,是否需要以空值开始一个字符串?

Do I need to start a String with a null value if I reserve it's space as a .space in MIPS32 assembly?

我正在尝试保留 space 以使用 .space:

在其中存储一个字符串
.data
  myString: .space 16

我从我的老师那里得到了一个示例代码,它说我必须以空值 (0) 开始该字符串,但我不明白为什么,为什么需要这个?

提前致谢!

如果您的代码肯定在读取缓冲区之前写入缓冲区,那么缓冲区中的内容并不重要。否则它以 0 开头确实很重要,因此如果读取为隐式长度的 0 终止字符串,则它是空字符串。

但是您已经 这样做了:.space 用零填充。以下将在内存中以完全相同的 16 个字节的零结束:

myString:
  .byte 0
  .space 15

如果您想在源代码中更加明确地指出开头是 0,这值得考虑。 (例如,如果您将此地址传递给在第一次写入之前读取它的东西)。即使那样,如果您知道 .space 的作用,它仍然只是混乱。在 .space 上发表评论就足够了。

我不确定您在哪里可以找到像 MARS 这样 .space 填充为零的经典 MIPS 汇编程序的文档,但对于像 GNU as 这样的 Unix 汇编程序来说,情况显然是这样的,主要是与经典 MIPS 汇编程序兼容:https://sourceware.org/binutils/docs/as/Space.html