MS Visual Studio 2010, как использовать файл .asm - PullRequest
8 голосов
/ 12 октября 2011

Я хотел бы спросить о том, что я собираюсь попробовать с Visual Studio 2010.

Я генерирую файл .asm из файла .cpp, установив для параметра «Выход ассемблера» вСвойства проекта -> C / C ++ -> Выходные файлы (/FAs).

Мой вопрос: как я могу на следующем шаге использовать этот сгенерированный .asm файл для повторной ссылки с этого без использованияфайл .cpp, на случай, если я захочу внести некоторые изменения в файл .asm, а затем снова связать их, сохранив изменения, которые я сделал на уровне сборки.

Было бы очень полезно, если бы вы могли предоставить точные шаги, включая правильную конфигурацию, может потребоваться в свойствах проекта.

Ответы [ 3 ]

1 голос
/ 27 октября 2011
0 голосов
/ 04 февраля 2015

Просто перетащите файлы .obj в проект (дерево обозревателя решений): Как включить файлы .obj в проект

0 голосов
/ 18 января 2014

Я сделал это недавно.Вот повторение ответа, который я дал здесь compile-Assembly-Output-Generated-By-VC .Оказывается, вы все еще можете делать это в 32-битном режиме в MSVC2012, но я думаю, что 64-битный режим безнадежен.

Для 32-битного режима вот что вы делаете.

Создание пустого проекта и исходного файла Source.cpp

 #include <stdio.h>
 int main() {
     printf("hello world\n");
     return 0;
 }
  1. Щелкните правой кнопкой мыши на вашем проекте и выберите «Build Customization» и
    выберите маску, как описано здесь http://www.masm32.com/board/index.php?topic=9231.0
  2. В C ++ / OutputFiles выберите Сборка Output / FA
  3. Comipile в 32битовый режим Режим разблокировки
  4. Загрузите файл Source.asm в MSVC, чтобы вы могли просмотреть его.Это пока не сработает.Несколько изменений все еще необходимы.
  5. В C ++ / Оптимизация отключить Оптимизацию всей программы (удаляет /GL).Это добавляет строку INCLUDELIB MSVCRT
  6. . В Linker / Advanced установите последний параметр «Изображение с безопасными обработчиками исключений» на Нет (/SAFESEH:NO)
  7. Теперь у вас должен быть Source.asmфайл, который будет делать то же самое, что и файл Source.cpp.Скопируйте Source.cpp из каталога Release в тот же каталог, что и Source.cpp (чтобы он не удалялся при сборке / очистке).
  8. Добавьте Source.asm (как существующий файл) к исходным файлам и удалите Source.cpp из сборки.
  9. Перестройте, и вы должны увидеть «Hello World» без необходимости изменять какие-либо сборочные линии вручную.

Я использовал это для более сложных функций.Я обычно делаю это в отдельном модуле и использую extern "C" в имени функции для удаления искажения имени в C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...