Основы inline ассемблера для С в Visual Studio (MSVC compiler) x86 компиляции для Windows

от автора

Всем привет! я долго искал статью на эту тему, но так как очень много кто использует GNU компилятор или линукс вариант написания, то мне это не подходит, эта статья призвана кратко разобрать основы inline ассемблера для С в MSVC вариации, также стоит отметить, что я буду разбирать все организационные моменты с расчетом на то, что вы уже несколько лет пользуйтесь Visual Studio и C/C++ в частности, хотя бы на уровне джуна-самоучки, коим я и являюсь, поэтому новичкам стоит гуглить некоторые моменты, еще так же стоит отметить, что на ассемблере я пишу крайне редко, поэтому иногда использую костыли, если вы нашли подобный подход и не согласны с ним, предложите свою версию в комментариях с аргументацией и я изменю код, еще важно отметить что я не хочу по 10 раз переписывать уже готовые хорошие статьи, и вместо своего пояснения иногда буду вставлять ссылки на отличные статьи, которые могут объяснить тему лучше, и при этом будут рабочими для нашего варианта, всем продуктивного изучения!

Начнем с настройки VS
перейдите в VS Installer, нажмите изменить текущую установленную версию, я использую community версию Visual Studio 2022, установите галочку на

Разработку классических приложений на С++++++++++++break;)

Разработку классических приложений на С++++++++++++break;)

Далее перейдите во кладку отдельные компоненты и через поиск найдите и установите галочку на этот компонент:

MSVC v143 - VS 2022 C++ x64/x86 build tools (версии АААААААААААА)

MSVC v143 — VS 2022 C++ x64/x86 build tools (версии АААААААААААА)

и нажмите изменить/modify, чтобы компоненты докачались, откройте измененную версию VS, создайте проект с шаблоном Консольное приложение С++, далее, придумайте имя проекта и впишите его расположение, снова кнопка далее, и создать
В обозревателе решений найдите созданный по умолчанию .cpp файл и удалите его, создайте новый пустой файл с названием main.c, нажмите на него в обозревателе решений правой кнопкой мыши, выберите свойства, найдите дополнительно

дополнительно

дополнительно

и в поле компилировать как выберете компилировать как код С (/TC)
(для особо пытливых умов, /TC означает или как Turbo C, далее прогуглить не сложно)
примените изменения

выбор варианта компиляции

выбор варианта компиляции

выберите вариант компиляции Debug x86, это обязательно, т.к. в x64 простой синтаксис MSVC ассемблера уже не распознается так как мы хотим, и там абсолютно другой подход

#include <stdio.h> typedef char byte; /* я часто использую тип данных byte,  который в С обозначается char, что лично мне неудобно*/  int main() {     __asm {              }     return 0; } 

Теперь при нажатии сочетания клавиш CTRL+F5 проект должен корректно выполниться без отладки, напоминаю что если консоль сразу закрылась без ошибок, то просто добавьте перед return 0 строку system("pause");, а если хотите почувствовать себя хакером то system("color A"); перед __asm {

Мы завершили настройку! Проверьте, что нет никаких ошибок и ждите следующего выпуска!


ссылка на оригинал статьи https://habr.com/ru/articles/894860/