1. Assembler / Говнокод #12876

    +123

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    xorl %eax, %eax                           # cx - source, ebx - result
        movw %cx, %ax
        andw $0x8000, %ax
        shrw $15, %ax
        movl $0xFFFFFFFF, %ebx
        addl %eax, %ebx
        notl %ebx
        andl $0xffff0000, %ebx
        addw %cx, %bx

    Запостил: LispGovno, 10 Апреля 2013

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

    • Знаковое расширение 16 -> 32 что-ли?

      P.S.
      movsx ebx, cx
      Ответить
      • Все верно. Интересно, а как подобное делать, если movsx нет. Имхо это сильно длинный вариант. Ветвления тоже бы не хотелось
        Ответить
        • Ну самое тупое, что приходит в голову:
          ; cx - source
          ; ecx - result
          shl ecx, 16
          sar ecx, 16
          Ответить
        • >если movsx нет
          Под какие процессоры пишешь?
          Ответить

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