В чем разница между .asciiz и .ascii? - PullRequest
4 голосов
/ 16 октября 2011

Я прочитал, что .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 "

UPDATE

Каковы последствия или когда я использую каждый? asciiz звучит как "правильный" метод?

1 Ответ

13 голосов
/ 16 октября 2011

Как написано @osgx, ASCIIZ означает, что строка заканчивается символом NUL \0 (код ASCII 0). Их даже называют C строк . Цитировать оттуда:

В вычислениях строка C - это последовательность символов, оканчивающаяся нулевой символ ('\ 0', называемый NUL в ASCII). Обычно хранится как одномерный массив символов. [сомнительный - обсудить] Название относится к язык программирования C, который использует это строковое представление. Альтернативные имена - ASCIIZ (обратите внимание, что строки C не подразумевают использование ASCII) и строка с нулевым символом в конце.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...