1. Perl / Говнокод #24491

    −1

    1. 1
    SADASD

    Запостил: kezzyhko, 13 Июля 2018

    Комментарии (14) RSS

    • Бл, где функция удаления? Мисскликнул
      Ответить
      • Бывает...

        Удаление через письмо админу.
        Ответить
    • Я вижу:
      push bx
      inc cx
      inc sp
      inc cx
      push bx
      inc sp
      По-моему, это уже диагноз...
      Ответить
      • >>inc sp
        разве можно его напрямую inc?
        Ответить
        • Можно, можно даже оставить его нечётным.
          Ответить
          • Всегда так делаю.
            Ответить
            • Что будет если попнуть, когда sp = ffffh? В досбоксе после "pop ax" sp = 1, ax = 0, а я думал, там будет cd00h.
              Ответить
              • Память же не зацикливается. Он выдернет один байт из следующего сегмента.
                Ответить
        • Это чепуха. В 8088/8086 была инструкция POP CS (опкод 0Fh). Вот это было по-настоящему страшно.

          В следующих моделях POP CS убрали, а 0Fh приспособили как префикс для ввода новых опкодов.
          Ответить
        • Кстати, через dec sp компиляторы выделяют место под локальные переменные функций, а потом чистят вилкой inc sp или mov sp, bp (leave).
          Ответить
          • P.S. Ну ладно, не через dec/inc, а через sub/add, но идея, надеюсь, понятна.
            Ответить
      • push bx
        ...
        inc sp

        Удаляем из стека один байт, значит, содержимое bl теряется, от bx остаётся только содержимое bh. Фактически получился сдвиг на 8 бит вправо (если перед этим в стеке лежал ноль).
        Ответить
    • Капчу тоже мисскликнул?
      Ответить
      • кнопка предпросмотра находится после капчи
        Ответить

    Добавить комментарий