Генерирование байтов

Тема в разделе "WASM.ARTICLES", создана пользователем Entropy, 16 окт 2020.

  1. _edge

    _edge Well-Known Member

    Публикаций:
    1
    Регистрация:
    29 окт 2004
    Сообщения:
    631
    Адрес:
    Russia
    Поломайте-ка голову )

    Берем произвольное четырехбайтовое (32 бит) число. Представляем его как сумму других чисел, сумма факториалов которых дает начальное число, которое мы таким образом пытаемся представить. И, судя по http://math-prosto.ru/?page=pages/calculators/factorial_online.php , каждое из этих составляющих будет не больше 12 (т.е. занимать не более 4 бит, 13! = 6 227 020 800 и это уже больше 232), т.о. таких чисел максимум мы можем найти 8 (8×4=32 бит), ежели мы не смогли представить начальное число как меньше 8 таких маленьких чисел, "сжатие" не удалось.

    Т.е., разбираем на составные, к примеру, число 100500999 (32 бит) = 7!+8!+2!, например. Эти 3 числа каждое макс по 4 бита, соот-но, 4×3=12 бит они заняли, условно, места.

    В ЛолПаке я представлял начальное число как сумму других чисел, которые возводил в (фиксированную) степень. Не получилось ужимать.

    12! = 479 001 600, для "описания" 232 таких чисел уже нужно ~9.
     
  2. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    175
    Я понимаю что эту "статью" надо было дополнять кодом ещё на момент написания,но у меня возникли некоторые обстоятельства

    Код на FASM

    Код (ASM):
    1. format PE console
    2. entry runpoint
    3.  
    4. include 'win32axp.inc'
    5.  
    6.  
    7. section '.text' code readable executable
    8. runpoint:
    9.  
    10. xor eax,eax
    11. xor edx,edx
    12. xor ebx,ebx
    13.  
    14. prоcess_bytes:
    15. mov al,[group_byte+edx]
    16.  
    17. and al,11b
    18.  
    19. or bl,al
    20.  
    21. shl bl,2
    22.  
    23. inc edx
    24.  
    25. cmp edx,4
    26.  
    27. jz endprogram
    28.  
    29. jmp prоcess_bytes
    30.  
    31. endprogram:
    32.  
    33. invoke ExitProcess,0
    34.  
    35.  
    36.  
    37. section '.data' data readable writeable
    38.  
    39. group_byte db 0xC8,0xD2,0xF1,0xA9
    40.  
    41.  
    42.  
    43.  
    44.  
    45. section '.idata' import data readable writeable
    46.  
    47.  
    48. library kernel32,'kernel32.dll'
    49.  
    50.  
    51. import kernel32,\
    52.        ExitProcess,'ExitProcess'
    53.