Встроенная сборка GCC + - неожиданное Segfault на notl - PullRequest
2 голосов
/ 28 июня 2011

Код: http://paste.pocoo.org/show/422081/ (отсутствует ссылка 404).

Хорошо, поэтому я пытаюсь НЕ генерировать общие фрагменты памяти и решил, что я покончил с громоздкими приведениями, и решил, что я упаду во встроенную сборку (я думаю, что это фактически улучшило читабельность). Мне удалось сузить этот сегмент до одной конкретной функции. Это в строке 22 пасты.

Все же это всегда segfaults. Как видите, str передается как argv [1].

Я могу вручную что-то делать с argv [1] (например, argv[1][0] = 'q'), поэтому я не совсем уверен, почему это не сработает, особенно учитывая, что ранее в nots он успешно работал not8 и not2. Есть что-то напуганное, о чем я не знаю? Что здесь не так?

Также неплохо было бы сделать общий обзор кода; Я довольно новичок в C.

1 Ответ

2 голосов
/ 28 июня 2011

Ваша проблема в переменной password.Вы выделяете только один элемент, а затем делаете password++ в цикле for.Итак, во второй раз, когда вы делаете цикл, вы попадаете в никуда.

Код показывает, что вы используете слишком сложные концепции, которые вы осваиваете в данный момент.

  • Неделайте встроенный ассемблер, если вы еще не знаете, как обращаться с указателями.
  • Не приводите возвращаемые значения malloc.
  • unsigned char, как правило, правильный тип для проверки отдельных байтов.объекта.
...