Как вы компилируете ассемблерный код, используя Visual Studio 2017? - PullRequest
0 голосов
/ 26 января 2019

Можно было бы надеяться, что использование ассемблера в Microsoft Visual C ++ 2017 будет почти таким же простым (для тех, кто, как я, писал ассемблер более 50 лет), как C / C ++.Эти надежды были разбиты.

Справка, которую я нахожу в Интернете, говорит о том, что нужно щелкнуть правой кнопкой мыши название вашего проекта и выбрать «Построить зависимости», а затем «Построить настройки ...».Или «Проект -> (щелчок правой кнопкой мыши) -> Зависимости сборки-> Настройки сборки ...-> (проверить) masm», который не является начальным, поскольку Проект -> (щелчок правой кнопкой мыши) -> Зависимости сборки не предлагается..

Мой код собирается из ml64 после удаления нескольких элементов, которые требуются masm для определения целевого типа процессора.И FWIW кажется, что extern "C" void myAsmFunc (unsigned int *);требует 'public _myAsmFunc'.Я нахожу это добавленным под барной досадой.

Итак, как мне получить не только этот конкретный .asm для сборки, но и определить общее правило для всего кода сборки ml64?(Было бы неплохо включить masm для 32-битных целей. Но я не об этом спрашиваю.)

1 Ответ

0 голосов
/ 26 января 2019

Вместо того, чтобы взять значение по умолчанию, я вручную ввел материал командной строки. Сначала я создаю пустой проект, затем добавляю существующий элемент, исходные файлы сборки. Затем в окне проекта для каждого исходного файла .asm я щелкаю правой кнопкой мыши по имени, затем щелкаю правой кнопкой мыши по свойствам, вообще, установить исключен из сборки в no. Затем щелкните пользовательский инструмент сборки (возможно, вам придется его включить), общие сведения, а затем следующее, используя x64.asm в качестве примера имени исходного файла.

command line for debug build:
    ml64 /c /Fo$(OutDir)\x64.obj x64.asm
outputs:
    $(OutDir)\x64.obj

command line for release build:  (the only difference is no /c)
    ml64 /Fo$(OutDir)\x64.obj x64.asm
outputs:
    $(OutDir)\x64.obj

Для 32-битных сборок используйте ml вместо ml64.

...