Использование ASM при компиляции x64 C ++ с MSVC10

Из-за того, что MSVC10 не позволяет использовать встроенные инструкции ASM при ориентации на архитектуру x64, я ищу любые способы обойти такие ограничения. Из Google я узнал, что написание и компиляция отдельных модулей ASM, а затем связывание с ними и вызов их из C ++ - это один из способов, однако я понятия не имею, как бы я это сделал. Есть ли другие способы, кроме использования встроенных функций компилятора? Или как можно писать / компилировать / связывать отдельные модули ASM в VS2010?


person Gareth Foster    schedule 25.08.2010    source источник


Ответы (1)


Вы можете использовать отдельную программу на ассемблере, которая будет компилировать полные исходные файлы ассемблера в объектные файлы. Пока вы следуете правильным соглашениям о вызовах, вы можете предоставлять прототипы функций для использования в C ++, связывая вместе созданные C ++ и ASM объектные файлы.

Я использую yasm. Он использует синтаксис Intel, поддерживает x64 windows и интеграцию с VS2010. Он имеет полезный макрос и включает функции. Должен признаться, что мне не приходилось использовать его с VS2008, когда интеграция работала немного иначе, но он должен хорошо работать с VS2010.

person CB Bailey    schedule 25.08.2010