MIPS: размер .asciiz?

При определении размера строки .asciiz следует ли учитывать завершающий символ?

Например:

.data
string: .asciiz "Hello"

Размер "строки" 5 или 6 (байт)?

Заранее спасибо.


person Ivan Gandacov    schedule 30.06.2016    source источник
comment
Размер данных включает байт NULL в конце строки, поэтому он занимает 6 байт. Однако длина строки ASCIIZ составляет 5 символов. Я думаю, вы хотите знать используемое пространство, это будет 6 байтов.   -  person gusbro    schedule 30.06.2016
comment
@gusbro Итак, это 6 байт. Спасибо.   -  person Ivan Gandacov    schedule 30.06.2016


Ответы (4)


если вы спрашиваете, сколько байтов в памяти хранится строка, то это 6 байтов

если вы спрашиваете о том, что должна возвращать функция, которая подсчитывает длину строки (например, функция strlen C), она должна быть 5

person Robert    schedule 23.07.2016

Согласитесь с Робертом, в этом случае байтов в памяти всего 6. Однако, как объясняет Paxym, в языках высокого уровня размер строки будет измеряться как 5.

person Community    schedule 11.09.2017

Эта конкретная строка asciiz требует 6 байт памяти.

В ситуациях программирования вы будете измерять размер строки равным 5. Как и в strlen().

При использовании этой строки, скорее всего, ваш цикл будет проверять NULL условий и будет выполняться 5 итераций.

При копировании и сохранении этой строки ваш код, скорее всего, зациклится 5 раз, а затем (вне цикла) добавит в конце дополнительный символ NULL '\0', чтобы сохранить завершение NULL. Следовательно, целевое пространство для хранения должно быть на 1 больше, чем strlen().

person Paxym    schedule 26.07.2016

Каждый символ ascii занимает 1 байт. если вы пишете привет, это 5 байт

person Alim Öncül    schedule 21.05.2017