Обсуждаем программирование на чистом ассемблере.

Тема в разделе "FASM", создана пользователем Richie, 12 июн 2026 в 11:26.

  1. Richie

    Richie New Member

    Публикаций:
    0
    Регистрация:
    28 апр 2026
    Сообщения:
    5
    Привет. Расскажу немного свою историю: я уже наверное года 2-3 активно программирую на ассемблере, а точнее с использованием диалекта FASM, из-за его системы макросов и прочего он является довольно таки удобным.

    Перешел я на программирование только на ассемблере только после того, как попробовал разные языки высокого уровня типа С/С++/Python и прочее.
    Относительно недавно я решил вновь вернуться в С++ и если честно, не сказать, что мне это прям нравится, имхо ЯВУ - это не мое. Я любитель низкоуровневого программирования, можете называть мазохистом.

    Перешел я на С++ с целью облегчить себе жизнь при разработке драйверов под Windows, либо при разработке каких-то утилит, и, действительно, я заметил, что скорость разработки ускорилась в разы.
    И вот я вспомнил, что в FASM-е есть стандартные макросы типа: invoke/stdcall и прочее, но их может быть недостаточно для быстрой разработки. Тк условная проверка на выполнение условия осуществляется через все тот же CMP, создание switch/case тоже реализуется через специальные отдельные метки, что, конечно же затрудняет разработку.

    И я вот задумался, касаемо того, чтобы создать свою кастомную систему макросов, причем не просто систему, а красивую и кастомную системную макросов на FASM, с помощью которых скорость разработки будет укорачиваться в разы, на уровне ЯВУ.

    То есть реализовать ООП с полиморфизм и с нормальным сокрытием, реализовать комфортные управляющие конструкции (вроде if/else, switch/case и циклов while/for), автоматизировать управление памятью, а также упростить рутинные операции, сохранив при этом полный контроль над генерируемым машинным кодом.
    Также можно будет добавить что-то вроде макросов для автоматического освобождения ресурсов при выходе из функции (например, автоматический вызов ExFreePool для выделенной памяти или ZwClose для дескрипторов при достижении макроса ret).

    Как вам идея, форумчане, стоит ли тратить время?
     
  2. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    358
    это всё уже есть в коробке fasm'a
    он предлагает вам примитивы, из которых вы можете собирать что угодно (комбинировать их).
    на всякий - вот хелп ..
     

    Вложения:

    Mikl___ и Richie нравится это.
  3. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    2.190
    С макросами .if/.elseif/.else/.endif немножечко фиаско вышло.
    По достижении ret легко реализуемо через списки, которые можно точкой пристягнуть к имени процедуры. Загвоздка только в том, чтобы освобождать ресурсы только в том случае, если они были инициализированы. А то выделишь под .if'ом, а освобождать будешь в конце процедуры.
     
    Richie нравится это.
  4. Tech

    Tech Member

    Публикаций:
    0
    Регистрация:
    1 апр 2026
    Сообщения:
    34
    Если твое сообщение скопировать в тот же дипсик он выдаст много
    вариантов макросов на фасме в виде ссылок на код/страницы форума.

    Были даже попытки прикрутить ооп с помощью макросов.

    ---

    Самые свежие фасм как с: https://board.flatassembler.net/topic.php?p=231362
     
    Последнее редактирование: 12 июн 2026 в 22:03