Простые алгоритмы шифрования

Тема в разделе "WASM.CRYPTO", создана пользователем Jin X, 28 июн 2018.

  1. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.953
    Какой-то новодел с новыми синтаксическими конструкциями и без поддержки х86 по умолчанию. И на прошлом движке не было никакой проблемы в создании ассемблеров на другие процессоры, но тут видимо решили пойти дальше. На сайте сказано, что он призван стать преемником оригинального фасма. Подробно не смотрел, за это надо плотно садиться и изучать, лучше всего сразу практическое что-то делать, пока не до этого. Буду что-нибудь новое писать, возможно попробую, если времени достаточно будет. У классического макроязыка фасма есть пара недостатоков, будет хорошо, если в новом они учтены.
     
  2. asmlamo

    asmlamo Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    1.729
    Да реально. Я использую именно Масм Версия 14.00.2421 (ml64.exe)
     
    betrayer нравится это.
  3. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    369
    Адрес:
    Кольца Сатурна
    UASM понимает (тот же MASM). Собственно, NASM и fasm тоже понимают.

    fasmg – это версия fasm'а, которая ничего не знает о встроенных инструкциях процессоров, но позволяет создавать свои наборы инструкций (к примеру, в комплекте идут наборы для 8051, AVR, JVM и x86). Но использовать его вместо fasm для x86/x64 нет смысла, ибо он работает медленнее, ведь все инструкции процессора прописаны макросами.
     
    betrayer и Mikl___ нравится это.
  4. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.953
    Насчет медленной работы еще надо проверить и оценить. Фасм 1 не идеал, если злоупотреблять многопроходными директивами, 2 гига оперативки выжирает с легкостью, использовать больше технически невозможно. Я думаю обработка всего этого добра тоже скорострельности не способствует, а писать голыми инструкциями так себе развлечение. Смотрю сейчас в новом макроязык, он серьезно отличается от обычного фасмовского, причем гораздо гибче и интересней. Сейчас его пожалуй использовать рано, там нету пока привычного набора макросов типа proc/stdcall/.if, их переписывание в процессе https://board.flatassembler.net/topic.php?t=19283, но когда какая-то базовая часть будет готова, задуматься о переходе стоит.
     
    Mikl___ нравится это.
  5. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    это Вы, Друзья, жертвы привычки :) ставьте gcc и будет Вам счастье == еть полноценный инструментарий с возможностью миксить языки в проге. в большинстве случаЁв асм нуж:crazy:нЪ вставками в ту же сишечку. а на этих Ваших костылях (фасмы/тасмы/масмы/насмы/..) сплошной гемор :)
     
  6. Ronin_

    Ronin_ Active Member

    Публикаций:
    1
    Регистрация:
    24 дек 2016
    Сообщения:
    252
    UbIvItS, AT&T это счастье?
     
  7. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
  8. betrayer

    betrayer Guest

    Публикаций:
    0
    Да, от gcc уже даже родное линукс сообщество отказывается (все на clang уходят), а вы говорите о каком-то счастье. И зачем gcc , в студии же тоже можно асм вставки делать и даже вроде как то добавлять асм листинги.

    Да, спасибо, он собирает.

    Кстати! Я взял скопировал с ...\Microsoft Visual Studio 14.0\VC\bin\ этот самый ml, и все работает. Вопрос - почему Хатч комплектирует свой масм32 каким-то допотопным линкером, если от того же Майкрософта есть готовый вариант?
     
  9. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.708
    betrayer,
    можно и напрямую у Стива спросить, почему он делает так, а не иначе. Но я уже спрашивал, поэтому повторюсь, hutch-- не хочет проблем с юристами Майкрософт... Это ж, Австралия, сказали "нельзя", "соблюдайте лицензию" значит "нельзя"...
     
    betrayer нравится это.
  10. betrayer

    betrayer Guest

    Публикаций:
    0
    Mikl___, спасибо, понял. Я думал, какие-то технические нюансы есть, а на юристов с копирастами мне как то все равно.
     
  11. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.074
    если шланг обойдёт гсс == в добрый путь.. но суть не в этом, а..
    масм/фасм/.. имеют статус сугубо костыльный и у них ни-аких ресурсов на нечто большее нет.
    студия ограничивает твои действия лицухой мокрых, а в опенсорце ты сам могешь добавлять фичи / исправлять баги + внедрять опенсорц в свои проги. То бишь много гемора йдёт Лесом-де Садом.
     
  12. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.953
    Миллионы мух иногда не ошибаются, не выбирая гцц. В любом случае отрадно такое слышать после примерно 12 лет использования фасма.
     
  13. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.708
    f13nd,
    а мне почему-то обидно за масм стало... (пользуюсь с 1994)
     
  14. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.953
    Вспомнилась статья КК, где он назвал фасм "игрушечным ассемблером", рассуждал на тему потери автором интереса и в результате потери интереса публики к транслятору из-за отсутствия поддержки новых наборов инструкций. И при этом на все лады расхваливал масм. Получилось все в точности наоборот: фасм штурмует другие архитектуры (из коробки, потому что самому можно было и на старом движке любой ассемблер сделать), а масму надо со студии линкер подставлять, чтоб с новыми наборами инструкций работало.
     
    Последнее редактирование: 6 окт 2018
  15. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.708
    f13nd,
    Счастье — такая трудная штука:
    То дальнозорко, то близоруко.
    Часто простое кажется вздорным,
    Черное — белым, белое — черным.
    (©Черное и белое. музыка — Э. Колмановского, слова — М. Танича)
     
  16. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    369
    Адрес:
    Кольца Сатурна
    Я сравнивал, сравните, если хотите.
    Тут даже по логике ясно, что макросы будут работать медленнее встроенных конструкций.
    Какое преимущество у fasmg перед fasm для x86? Я вот лично не вижу. Более гибкие макросы?
    --- Сообщение объединено, 6 окт 2018 ---
    Ну вкус и цвет товарища нет.
    У каждого ассемблера, да и вообще языка, свои плюсы и минусы. Где-то больше, где-то меньше. Какие-то критичные, какие-то не очень. Какие-то важны конкретному человеку, а какие-то неважны.
    А по факту реально в каждом ассемблере свои косяки. Что в MASM/UASM, что в fasm (или fasmg), что в NASM (о котором почему-то тут речи не зашло, хотя им пользуется большинство зарубежных разработчиков, и их вполне можно понять).
    Хоть свой ассемблер пиши. Я даже с не очень давнего времени стал записывать идеи в файлик. А друг :)
     
    Последнее редактирование: 6 окт 2018
  17. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.953
    Как минимум макросы, да. Макродвижок фасма 1 жрет много памяти, что у фасм г с этим - не известно. То, как фасм рассчитывает количество нужной ему памяти - отдельная песня, там по всей видимости ну оочень высока избычточность промежуточных данных.
    Код (ASM):
    1.     mov    eax,[compiler_memory]
    2.     shl    eax,10
    3.     jz    out_of_memory
    4.       allocate_memory:
    5.     mov    edx,eax
    6.     shr    edx,2
    7.     mov    ecx,eax
    8.     sub    ecx,edx
    9.     mov    [memory_end],ecx
    10.     mov    [additional_memory_end],edx
    11.     invoke    VirtualAlloc,0,eax,MEM_COMMIT,PAGE_READWRITE
    У нового даже опции, ограничивающей память, нету. Хочется верить, что в нем не так. Скорость компиляции не только скоростью транслирования инструкций определяется, у меня вон на пересборку 63 исходников около полутора минут уходит, это фасм 1. У оригинального некоторые вещи типа рекурсии делаются ну совсем ягодичным способом - макросом, вложенным в макрос, который вызывается с каждой итерацией, чтоб объявить новую копию вложенного макроса и дать ему другие аргументы, что у нового с этим - пока не ясно. Некоторые вещи просто невозможно на фасме 1 реализовать, например ряд меток с нужными названиями заказать, приходится через equ/restore выкручиваться. Не всегда возможно сделать задуманное так, как хотелось бы.
     
  18. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.708
    ... Золотые слова, Юрий Венедиктович.
    1. «Человек столько раз человек, сколько языков он знает» — «Жизнеописания великих иноземных полководцев» Пьера Брантома (1666) приписано императору Карлу V (1500—1558)
    2. «Сколько языков ты знаешь, столько раз ты живёшь» Гете
    Знание masm, tasm, fasm, nasm, wasm, poasm, gas etc., даже в малой степени, ни капли не повредит :)
     
  19. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    369
    Адрес:
    Кольца Сатурна
    Код (Text):
    1. flat assembler  version 1.73.04
    2. usage: fasm <source> [output]
    3. optional settings:
    4.  -m <limit>         set the limit in kilobytes for the available memory
    5.  -p <limit>         set the maximum allowed number of passes
    6.  -d <name>=<value>  define symbolic variable
    7.  -s <file>          dump symbolic information for debugging

    Не знаю, что там у вас за исходники, но у меня сам fasm собирается за сотые доли секунды. А это более 1 МБ текста. Сделал батник, который запускает компиляцию fasm'а 100 раз, всё выполняется за 7 секунд.
    fasmg (при добавлении строки include 'format/format.inc') выдаёт ошибку через 12 секунд в одном из файлов. При этом он потребляет 120 МБ памяти.

    Ещё эксперимент:
    Код (ASM):
    1. repeat 10000000
    2.   db 0xC3
    3. end repeat
    Компилим:
    Код (Text):
    1. flat assembler  version g.i5y0r
    2. 1 pass, 3.4 seconds, 10000000 bytes.
    Код (Text):
    1. flat assembler  version 1.73.04  (1048576 kilobytes memory)
    2. 1 passes, 0.7 seconds, 10000000 bytes.
    (причём, если вместо db написать ret, то fasm скомпилит за 0.5 сек, а fasmg при включении файла 8086.inc – за 24.2 сек).

    А память да, fasm выделяет хорошо (сам пишет, что 1 ГБ потребляет даже на пустом исходнике). Видимо, просто выделяет сразу по максимуму, чтобы не париться. Хотя лично меня это никогда не волновало.
    В любом случае, есть опция -m. Ставим -m 4096 (т.е. ограничение в 4 МБ), и fasm компилится без проблем. С 3 МБ – тоже, а вот 2 МБ уже out of memory.
    --- Сообщение объединено, 6 окт 2018 ---
    Т.е. даже с точки зрения памяти... fasmg (когда собирал fasm) сожрал 120 МБ (см. выше), при этом дело не доделал; fasm'у же хватило 3-4 МБ.
     
    Последнее редактирование: 6 окт 2018
  20. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.953
    Показать как сделать, чтоб не хватило? :whistle:
    Директива repeat применима не всегда, часто вместо нее rept приходится использовать:
    Код (ASM):
    1. E:\123\fasmw17304>more test.asm
    2. repeat 10000000
    3.   db 0xC3
    4. end repeat
    5. E:\123\fasmw17304>fasm -m 2097152 test.asm
    6. flat assembler  version 1.73.04  (1048576 kilobytes memory)
    7. 1 passes, 0.5 seconds, 10000000 bytes.
    8. E:\123\fasmw17304>more test.asm
    9. rept 10000000 {
    10.   db 0xC3
    11. }
    12. E:\123\fasmw17304>fasm -m 2097152 test.asm
    13. flat assembler  version 1.73.04  (1048576 kilobytes memory)
    14. 1 passes, 6.3 seconds, 10000000 bytes.
    Код (ASM):
    1. E:\123\fasmg>more test.asm
    2. repeat 10000000
    3.   db 0xC3
    4. end repeat
    5. E:\123\fasmg>fasmg test.asm
    6. flat assembler  version g.ibh5n
    7. 1 pass, 2.5 seconds, 10000000 bytes.
    8. E:\123\fasmg>more test.asm
    9. rept 10000000
    10.   db 0xC3
    11. end rept
    12. E:\123\fasmg>fasmg test.asm
    13. flat assembler  version g.ibh5n
    14. 1 pass, 2.5 seconds, 10000000 bytes.
    И тут уже результаты спорные. А на использование памяти тест:
    Код (ASM):
    1. E:\123\fasmw17304>more test.asm
    2. macro list_add list,val {
    3.         match any,list \{ list equ list,0x#val \}
    4.         match ,list \{ list equ 0x#val \} }
    5. list1 equ
    6. rept 9449 {
    7.         list_add list1,0}
    8. db list1
    9. E:\123\fasmw17304>fasm -m 2097152 test.asm
    10. flat assembler  version 1.73.04  (1048576 kilobytes memory)
    11. 1 passes, 0.8 seconds, 9449 bytes.
    12. E:\123\fasmw17304>more test.asm
    13. macro list_add list,val {
    14.         match any,list \{ list equ list,0x#val \}
    15.         match ,list \{ list equ 0x#val \} }
    16. list1 equ
    17. rept 9450 {
    18.         list_add list1,0}
    19. db list1
    20. E:\123\fasmw17304>fasm -m 2097152 test.asm
    21. flat assembler  version 1.73.04  (1048576 kilobytes memory)
    22. error: out of memory.
    Код (ASM):
    1. E:\123\fasmg>more test.asm
    2. macro list_add list,val
    3.         match any,list
    4.                 list equ list,0x#val
    5.         end match
    6.         match ,list
    7.                 list equ 0x#val
    8.         end match
    9. end macro
    10. list1 equ
    11. rept 11063
    12.         list_add list1,0
    13. end rept
    14. db list1
    15. E:\123\fasmg>fasmg test.asm
    16. flat assembler  version g.ibh5n
    17. 1 pass, 5.7 seconds, 11063 bytes.
    18. E:\123\fasmg>more test.asm
    19. macro list_add list,val
    20.         match any,list
    21.                 list equ list,0x#val
    22.         end match
    23.         match ,list
    24.                 list equ 0x#val
    25.         end match
    26. end macro
    27. list1 equ
    28. rept 11064
    29.         list_add list1,0
    30. end rept
    31. db list1
    32. E:\123\fasmg>fasmg test.asm
    33. flat assembler  version g.ibh5n
    34. Error: not enough memory to complete the assembly.
    Несколько получше, правда я ожидал другого.
    --- Сообщение объединено, 6 окт 2018 ---
    Вобщем макродвижок нового фасма однозначно рвет старый по гибкости, скорости и использованию памяти. Но если на голых инструкциях писать, старый выигрывает.