本文介绍了.asciiz和.ascii有什么区别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我读到.asciiz null会终止字符串(附加\n?)...但是,当查看QtSPIM的用户数据段时,

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

输出" Hello WorldHello World "

更新

含义是什么?何时使用它们? asciiz听起来像是正确"的方法?

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

推荐答案

由@osgx编写的ASCIIZ表示字符串以\0(ASCII代码0)NUL字符终止.它们甚至被称为 C字符串.要从那里引用:

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:

这篇关于.asciiz和.ascii有什么区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-12 23:53