Сборный / Говнокод #7185 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
PROCEDURE StartMusic (Song : POINTER; Polling, OldIRQ : BOOLEAN); ASSEMBLER;
  ASM
    MOV  AH,0
    MOV  BL,Polling
    MOV  BH,OldIRQ
    CMP  BH,1
    JE   @Invert
    MOV  BH,1
    JMP  @GoOn
  @Invert:
    XOR  BH,BH
  @GoOn:
    LES  SI,DWORD PTR Song
    CALL _HscPlayer
  END;

Нашел в HSC-TRACKER V1.5, файл playhsc.pas. Оригинальная инверсия булевого значения - true на false и наоборот.
Для не знающих ассемблера:

if (OldIRQ == 1)
    OldIRQ = 0
else
    OldIRQ = 1;
Реализуется куда проще:
OldIRQ ^= 1;

Запостил: DemonId7 DemonId7, (Updated )

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

  • Зато есть XOR BH,BH для обнуления регистра. 😀
    Ответить
    • Это я к тому, что XOR всё равно и так есть в этом раздутом коде, хотя его только и достаточно OldIRQ ^= 1;
      Ответить
  • Я кстати тоже накосячил. Правильнее было бы:
    OldIRQ ^= true;
    Мало ли какой компилятор попадется, во всех стандартах совпадает только значение false, а true "гуляет" по воле создателей 😀
    Ответить

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8