Assembly 如果保留字符串';s空间作为MIPS32程序集中的.space?
我正在尝试保留空间,以便使用.space在其中存储字符串:Assembly 如果保留字符串';s空间作为MIPS32程序集中的.space?,assembly,mips,mips32,Assembly,Mips,Mips32,我正在尝试保留空间,以便使用.space在其中存储字符串: .data myString: .space 16 我从老师那里得到了一个示例代码,它说我必须以空值(0)开始字符串,我不明白为什么,为什么需要这样做 提前谢谢 如果您的代码在读取缓冲区之前就明确写入了缓冲区,那么缓冲区中的内容并不重要。否则,它以0开头并不重要,因此如果作为隐式长度以0结尾的字符串读取,则它是空字符串 但您已经在这样做了:。空格用零填充。以下内容将在内存中以完全相同的16字节零结束: myString: .b
.data
myString: .space 16
我从老师那里得到了一个示例代码,它说我必须以空值(0)开始字符串,我不明白为什么,为什么需要这样做
提前谢谢 如果您的代码在读取缓冲区之前就明确写入了缓冲区,那么缓冲区中的内容并不重要。否则,它以0开头并不重要,因此如果作为隐式长度以0结尾的字符串读取,则它是空字符串 但您已经在这样做了:
。空格用零填充。以下内容将在内存中以完全相同的16字节零结束:
myString:
.byte 0
.space 15
如果您想在源代码中特别明确,在开始时有一个0,那么这是值得考虑的。(例如,如果您将此地址传递给在第一次写入之前读取它的对象)。即使如此,如果你知道.space
的功能,它仍然只是一堆乱七八糟的东西。在.space
上发表评论就足够了
我不知道你在哪里能找到像MARS这样的经典MIPS汇编程序的文档,.space
用零填充,但是对于像GNUas
这样的Unix汇编器来说,情况就是这样的,它与经典的MIPS汇编器基本兼容:如果您的代码在读取缓冲区之前就明确写入了缓冲区,那么缓冲区中的内容并不重要。否则,它以0开头并不重要,因此如果作为隐式长度以0结尾的字符串读取,则它是空字符串
但您已经在这样做了:。空格用零填充。以下内容将在内存中以完全相同的16字节零结束:
myString:
.byte 0
.space 15
如果您想在源代码中特别明确,在开始时有一个0,那么这是值得考虑的。(例如,如果您将此地址传递给在第一次写入之前读取它的对象)。即使如此,如果你知道.space
的功能,它仍然只是一堆乱七八糟的东西。在.space
上发表评论就足够了
我不确定您在哪里可以找到像MARS这样的经典MIPS汇编器的文档,.space
用零填充,但对于像GNUas这样的Unix汇编器来说,这是明确的,它主要与经典MIPS汇编器兼容:需要什么.space
已经用零填充,以防您关心从静态初始化值中读取字节,而不是以后存储的字节。@PeterCordes我的老师说的是字符串中的第一个字符必须是空值(0),但是我没有真正看到其中的逻辑。是的,这里面没有逻辑,除非您的代码在存储字符串之前想要读取它,所以它读取为空字符串。但正如我所说,您已经通过.space
满足了这个需求<代码>字节0
.space 15
将在内存中以相同的16字节零结束。需要什么.space
已经用零填充,以防您关心从静态初始化值中读取字节,而不是以后存储的字节。@PeterCordes我的老师说的是字符串中的第一个字符必须是空值(0),但是我没有真正看到其中的逻辑。是的,这里面没有逻辑,除非您的代码在存储字符串之前想要读取它,所以它读取为空字符串。但正如我所说,您已经通过.space
满足了这个需求<代码>字节0
.space 15
将在内存中以相同的16字节零结束。