我读过.asciiz null终止字符串(追加\n
?)...但是在查看QtSPIM的用户数据段时,
User data segment [10000000]..[10040000]
[10000000]..[1000ffff] 00000000
[10010000] 6c6c6548 6f57206f 00646c72 6c6c6548 H e l l o W o r l d . H e l l
[10010010] 6f57206f 00646c72 00000000 00000000 o W o r l d . . . . . . . . .
[10010020]..[1003ffff] 00000000
我没有看到差异?
.data
str1: .asciiz "Hello World" # string str1 = "Hello World"
str2: .ascii "Hello World" # string str2 = "Hello World"
.text
.globl main
main:
li $v0, 4 # print_string
# print(str1)
la $a0, str1 # load address of str1 into $a0
syscall
# print(str2)
la $a0, str2 # load address of str2 into $a0
syscall
j $ra
输出“ Hello WorldHello World ”
更新
有什么影响或何时使用? asciiz
听起来像是“正确的”方法吗?
答案 0 :(得分:13)
由@osgx编写,ASCIIZ表示该字符串由\0
(ASCII码0)NUL字符终止。他们甚至被称为C strings。引用那里:
在计算中,C字符串是以a结尾的字符序列 null字符('\ 0',在ASCII中称为NUL)。它通常存储为 一维字符数组。[可疑 - 讨论]这个名字指的是 使用此字符串表示的C编程语言。 替代名称是ASCIIZ(注意C字符串并不意味着使用 of ASCII)和以null结尾的字符串。