169 похожих чатов

Http://0x0.St/-WWB.Asm Можете подсказать почему завершается с segmentation fault? Задачка простая —

в массив занести от символы A до Z, и печать его до завершающего символа X. Под NASM, i386.
За макросы в файле stud_io.inc не беспокойтесь (вот он), используются только PUTCHAR (думаю логично для чего) и FINISH (просто корректно завершает программу).

22 ответов

4 просмотра

пытаешься обратиться к памяти, доступ к которой тебе не разрешен

Зачем две одинаковых секции сделал? Подозреваю, что первая секция завершается: mov byte [edi], 10 После чего - идут нули, и получаешь seg fault

k4leg- Автор вопроса
k4leg- Автор вопроса
Entusiast
Зачем две одинаковых секции сделал? Подозреваю, чт...

Две секции чтобы отделить визуально, потаённого смысла нет.

k4leg
Две секции чтобы отделить визуально, потаённого см...

Нельзя так использовать директиву section

k4leg
Почему?

Потому что она предназначена для определения секции Тебя, наверное, компилятор, или линковщик спас. Не понимаю, как это вообще пропустили

k4leg
Почему?

секции нужны чтоб делить байты в памяти по предназначению, а не чтоб у тя текстовый файл красива выглядел

Entusiast
Потому что она предназначена для определения секци...

элементарно, секцию можно сколько угодно раз писать, и они линкуются в порядке появления, при трансляции в объектник вроде как так же, есть ещё такие хитрые файлы crt*.o в одном объявлен пролог функции после чего секия резко обрывается, в другом файле эпилог, по умолчанию между ними линкер вставляет crtbegin.o и crtend.o, но это так лирическое отступление...

disba1ancer
элементарно, секцию можно сколько угодно раз писат...

Не нужно сколько угодно раз объявлять секции

Entusiast
Не нужно сколько угодно раз объявлять секции

я так так делаю и всё работает, но функции у меня не разрываются в этих местах

disba1ancer
я так так делаю и всё работает, но функции у меня ...

Ужасно! Но я ещё не видел, чтоб ты так делал Со структурой ELF не знаком, но в PE секция это тонна байт (Да и в ELF, уверен, не мало)

Entusiast
Ужасно! Но я ещё не видел, чтоб ты так делал Со ст...

если одну и ту же секцию объявить несколько раз асм их склеит в одну в выходном объектнике, линкер сделает аналогично, если скрипт тривиальный

disba1ancer
если одну и ту же секцию объявить несколько раз ас...

Как это одну и ту же? Секции нельзя объявить одни и те же. Они могут иметь одно и то же имя, одни и те же флаги, и всё равно они имеют право быть в исполняемом файле. Ну если только за тебя подтирает компилятор, тогда да, можно и смириться с этим (хотя я всё равно не улавливаю смысл, почему компилятор ограничивает в определении секций)

Entusiast
Как это одну и ту же? Секции нельзя объявить одни ...

.section создаёт новую секцию только в случае когда такой секции ещё нет, в остальных случаях он дописывает существующую, и вроде ругается если флаги перепутаешь

disba1ancer
.section создаёт новую секцию только в случае когд...

Там используется просто "section" Ну ладно, суть я уловил - компилятор не даёт адекватно самому построить структуру исполняемого файла, поэтому теперь можно фигачить в коде кучу секций, и нормалёк.

Entusiast
Там используется просто "section" Ну ладно, суть я...

две секции с одинаковыми именами, это в любом случае не нормально, но в исходнике нормальная ситуация, это означает просто запись в одну и ту же секцию

disba1ancer
две секции с одинаковыми именами, это в любом случ...

Да вот как раз наоборот В исходнике - ситуация ненормальная, когда определено много секций, причём эти секции бессмысленные, и всунуты просто ради красоты (хотя даже не вижу здесь красоты, просто бессмысленно). А вот в исполняемом файле - нормально, и сам так делаю: section 'entu' data readable writeable ; data section 'entu' code readable writeable ; code Когда хочу пометить файл, или выпендриться тем, что FASM мне даёт это делать))

Entusiast
Да вот как раз наоборот В исходнике - ситуация нен...

А ты смотрел результат в хексе, сколько по факту секций было в бинаре?

Entusiast
Ну две

И они были с одинаковыми названиями?

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

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Всем привет! поделитесь, пож-та, как кто дебажил / решал проблему с 504 Time out ошибкой от nginx, когда стучишься на свой vapor сервер? в логах /var/log/nginx/error.log е...
Paul
24
Как добавить ссылку в Быстрый доступ в Проводнике windows 10? Нашёл, как на power shell сделать, но может есть способ через Дельфи?
А
31
Привет всем. Не знаю, удачный ли чатик я выбрал для вопроса, но он как будто в целом про концепцию фп и конкретно про Haskell. Прочитал, что в целом в мире фп нет идеи мутабел...
Gellert Cringewald
15
@helgispbru @Dreamer_0x01 @Pathologic93 @webber_12 Не уверен, что вам всем это жутко интересно, но в продолжение недавнего диалога отправлю свои наброски. Хочу понять, правил...
Андрей [aharito] Харитонов
13
Карта сайта