Whats the difference between .asciiz vs .ascii

匿名 (未验证) 提交于 2019-12-03 01:12:01

问题:

I read that .asciiz null terminates the string (appending \n?) ... but when looking at the User Data Segment of 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 

I don't see a difference?

.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 

Outputs "Hello WorldHello World"

UPDATE

What are the implications or when do I use each? asciiz sounds like the "proper" method?

回答1:

As written by @osgx, ASCIIZ means that the string is terminated by the \0 (ASCII code 0) NUL character. They are even called C strings. To quote from there:



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!