assembly - 如果我在 MIPS32 程序集中将其空间保留为 .space,是否需要以空值开头?
问题描述
我正在尝试使用 .space 保留空间以在其中存储字符串:
.data
myString: .space 16
我从老师那里得到了一个示例代码,说我必须以空值 (0) 开始该字符串,但我不明白为什么,为什么需要这样做?
提前致谢!
解决方案
如果您的代码在读取缓冲区之前明确写入缓冲区,那么缓冲区中的内容并不重要。否则它以 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
推荐阅读
- java - 如何将每个用户链接到他们在 Firebase 中的数据?
- mysql - MySQL 8 获取当前执行的过程名称
- javascript - 如何使使用 Google Javascript Map API 制作的地图加载而不是保持白色
- mysql - 当连接的表可以有一条或多条记录时,如何连接关联表?
- python - 如何在 django 中获取所有用户与单个相关对象?
- java - 如何为不同的子类使用 RestTemplate.exchange
- google-app-engine - Google App Engine 中的无头 chrome 浏览器在哪里
- excel - 筛选包含单元格值的行
- php - 将模型保存到数据库后,是否有一种干净的方法可以使用模型的 ID?
- javascript - 如何滚动到里面的特定文本索引