首页 > 解决方案 > 如果我在 MIPS32 程序集中将其空间保留为 .space,是否需要以空值开头?

问题描述

我正在尝试使用 .space 保留空间以在其中存储字符串:

.data
  myString: .space 16

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

提前致谢!

标签: assemblymipsmips32

解决方案


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

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

myString:
  .byte 0
  .space 15

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

我不确定您在哪里可以找到诸如 MARS 之类的经典 MIPS 汇编器的文档,其中.space填充为零,但对于像 GNUas这样的 Unix 汇编器来说,情况就是这样,它主要与经典 MIPS 汇编器兼容:https ://sourceware.org/binutils /docs/as/Space.html


推荐阅读