Где строки с завершающим нулем при преобразовании из C в сборку?

Я сделал две программы для вывода двух строк, одну на ассемблере, а другую на C. Это программа на ассемблере:Я строю программу сИ результат такой, как ожидалосьЭто программа на C:И я получаю ожидаемый результат, но при преобразовании этой программы C в сборку с помощью gcc -S (ОС - это 32-разрядная версия Debian) исходный код выходной сборки не включает нулевой символ в обеих строках, как вы можете видеть здесь:Мои два вопроса:1) Почему сгенерированный gcc ассемблерный код не добавляет нулевой символ в конце обеих строк?Я думал, что C сделал это автоматически.2) Если я пропущу нулевые символы в собственном коде сборки, я получу следующий результат:Я понимаю, почему я получаю часть «HolaAdios» в первой строке, но почему программа успешно завершается после части «Adios», если она не завершается нулем?
7 голосов | спросил saga.x 9 PM00000020000003931 2016, 14:17:39

0 ответов


Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132