Это зависит от того, какой конкретный ассемблер вы используете, но в некоторых (включая GAS: https://sourceware.org/binutils/docs/as/Characters.html), это все еще \n
, точно так же как C. Вы можете увидеть, как выглядит сборка в нескольких различныхпути, но в наши дни GodBolt довольно хорош.
https://gcc.godbolt.org/z/ZLq3Kn
.LC0:
.string "Hi! My name is Joe.\n I'm 11 years old"
Вы можете видеть, что строка выглядит одинаково. В GAS, .string
создает строку с нулем в концеЕсли вы переключитесь на Clang (который использует тот же синтаксис, но по-разному выбирает, какие директивы выдавать), вы увидите, что он использует .asciz
.
.L.str:
.asciz "Hi! My name is Joe.\n I'm 11 years old"
Но в обоих ассемблерах \n
Это то же самое.
Не все ассемблеры поддерживают этот синтаксис. Но многие делают. Проверьте руководство для вашего ассемблера.
.string
такое же, как .asciz
для большинства целей добавляется ноль. В руководстве говорится , что в синтаксисе GAS для некоторых ISA .string
может не добавлять ноль, в то время как .asciz
всегда так и .ascii
никогда не делает. z
означает ноль.