При определении размера строки .asciiz следует ли учитывать завершающий символ?
Например:
.data
string: .asciiz "Hello"
Размер "строки" 5 или 6 (байт)?
Заранее спасибо.
При определении размера строки .asciiz следует ли учитывать завершающий символ?
Например:
.data
string: .asciiz "Hello"
Размер "строки" 5 или 6 (байт)?
Заранее спасибо.
если вы спрашиваете, сколько байтов в памяти хранится строка, то это 6 байтов
если вы спрашиваете о том, что должна возвращать функция, которая подсчитывает длину строки (например, функция strlen C), она должна быть 5
Согласитесь с Робертом, в этом случае байтов в памяти всего 6. Однако, как объясняет Paxym, в языках высокого уровня размер строки будет измеряться как 5.
Эта конкретная строка asciiz требует 6 байт памяти.
В ситуациях программирования вы будете измерять размер строки равным 5. Как и в strlen()
.
При использовании этой строки, скорее всего, ваш цикл будет проверять NULL
условий и будет выполняться 5 итераций.
При копировании и сохранении этой строки ваш код, скорее всего, зациклится 5 раз, а затем (вне цикла) добавит в конце дополнительный символ NULL '\0', чтобы сохранить завершение NULL
. Следовательно, целевое пространство для хранения должно быть на 1 больше, чем strlen()
.
Каждый символ ascii занимает 1 байт. если вы пишете привет, это 5 байт