С++ использовать ассемблер MASM. Нагуглил способ включения через настройки проекта:
https://docs.microsoft.com/en-us/cpp/assembler/masm/masm-for-x64-ml64-exe?view=vs-2019
но немного не то, потому что хочу сделать что-то типа статической либы, функции из которой я смог бы юзать в плюсовом коде, и при этом делать сборку через cmake. Нашёл ещё такой код:
https://github.com/corbamico/masm64_simple_example
но в нём нет примера библиотек, и плюс юзается внешний отдельно установленный масм. Нет ли способа использовать студийный макро ассемблер?
Ты же можешь добавлять отдельные файлы на масме? Они будут компилится в obj как остальные cpp? Нельзя ли просто собрать их в статическую либу после этого?
В том-то и дело, что нет. Если я создаю проект на cmake, как в образце с гитхаба, указываю язык для ассемблерных файлов asm_masm, то при сборке ошибок нет, но файлы просто не процессятся
Ну я в том числе про студийный проект, я видел в проектах файлы на асме (у них вместо ClCompile другой таргет в xml файле был). Я не знаю точно как это работает, но подозреваю, что точно так же создаётся obj файл и на общих основаниях линкуется дальше
А нет ли примеров?
Под рукой нет, но там это были файлы в рамках C++ проекта, а не отдельная либа
Такое у меня получалось сделать, если действовать как по ссылке от майкрософта, что я выше приводил. Но вот это не интегрируется с cmake, и непонятно, какой у того ассемблера синтаксис, потому что как к нему инклуды подключать, как либы указывать?
Вдруг вам будет интересно. Нашел пример: https://habr.com/ru/post/111275/ Он, конечно, так сходу не завёлся, в нём есть пара косяков - возвращали адрес локального буфера, забыли в плюсовом коде вызвать функцию, которая в ассемблере заимплеменчена, но если всё исправить, то оно компилируется и работает. Из минусов - непонятно пока, как всё это сделать с cmake, потому что сейчас нужно проекты в IDE конфигурировать
CMake из коробки умеет в enable_language(ASM)
Надо просто разобраться что происходит с asm файлами при сборке и повторить эти действия в cmake вплоть до написания велосипедов с ручным вызовом программ
Обсуждают сегодня