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

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    mov r8, qword ptr [rsi]
    mov rdx, qword ptr [rdi]
    bswap rdx
    mov rcx, rdx
    ror rcx, 1
    movabs rax, 0x808080808080808
    and rcx, rax
    or r8, rcx
    mov rcx, rdx
    ror rcx, 3
    movabs rax, 0x404040404040404
    and rcx, rax
    or r8, rcx
    mov rcx, rdx
    ror rcx, 5
    movabs rax, 0x202020202020202
    and rcx, rax
    or r8, rcx
    mov rcx, rdx
    ror rcx, 7
    movabs rax, 0x101010101010101
    and rcx, rax
    or r8, rcx
    mov rcx, rdx
    ror rcx, 0x39
    movabs rax, 0x8080808080808080
    and rcx, rax
    or r8, rcx
    mov rcx, rdx
    ror rcx, 0x3B
    movabs rax, 0x4040404040404040
    and rcx, rax
    or r8, rcx
    mov rcx, rdx
    ror rcx, 0x3D
    movabs rax, 0x2020202020202020
    and rcx, rax
    or r8, rcx
    mov rcx, rdx
    ror rcx, 0x3F
    movabs rax, 0x1010101010101010
    and rcx, rax
    or r8, rcx
    mov qword ptr [rsi], r8

    Разворот битов в uint64

    Запостил: CHayT, 15 Сентября 2025

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

    • Начал буквально от скуки пилить компилятор-заменитель Борманда в плане байто-SIMD-оёбства. На вход принимает произвольную матрицу битоебли, на выходе JIT. Здесь, няпример, антидиагоняльная матрица поворачивает биты в числе.
      В общем, обсирайте анскилл. Предложения попробую реализовать, благо пассы в этот "компилятор" добавлять до смешного легко.
      Ответить
    • Это же не говно, а bit twiddling hack или как та книжка(?) называлась

      Надо это положить в ghidra чтобы получить нормальный псевдокот
      Ответить
    • слушайте, я конечно не настоящй сварщик, но друг спрашивает, а нельзя было как-нить использовать bswap ?
      а нет
      хуйню написал
      там же переворачивается не слева на право а ноль на единичку
      Ответить

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