【问题标题】:MIPS: Size of .asciiz?MIPS:.asciiz 的大小?
【发布时间】:2016-11-02 19:15:07
【问题描述】:

在确定 .asciiz 字符串的大小时,我应该考虑 考虑终止字符?

例如:

.data
string: .asciiz "Hello"

“字符串”的大小是5还是6(字节)?

提前谢谢你。

【问题讨论】:

  • 数据的大小包括字符串末尾的NULL字节,所以消耗6个字节。但是,ASCIIZ 字符串的长度是 5 个字符。我猜你想知道使用的空间,那就是 6 个字节。
  • @gusbro 所以它是 6 个字节。谢谢。

标签: mips mips32 spim


【解决方案1】:

如果您询问字符串存储在内存中的字节数,那么它是 6 个字节

如果您询问计算字符串长度的函数(例如 strlen C 函数)应该返回什么,它应该是 5

【讨论】:

    【解决方案2】:

    同意 Robert 的观点,在这种情况下,内存中的字节总数为 6。正如 Paxym 解释的那样,在高级语言中,它会将字符串“大小”测量为 5。

    【讨论】:

      【解决方案3】:

      这个特殊的 asciiz 字符串需要 6 个字节的存储空间。

      在编程情况下,您将测量字符串大小为 5。如strlen()

      使用此字符串时,您的循环很可能会测试NULL 条件,并将运行 5 次迭代。

      复制、存储此字符串时,您的代码可能会循环 5 次,然后(在循环之外)在末尾添加一个额外的 NULL '\0' 字符,以保持NULL 终止。因此目标存储空间必须比strlen()大1。

      【讨论】:

        【解决方案4】:

        ascii 的每个字符都是 1 个字节。如果你写你好它是5个字节

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-26
          相关资源
          最近更新 更多