Использование Visual Studio 2008 для сборки, связывания, отладки и выполнения кода сборки MASM 6.11 - PullRequest
6 голосов
/ 22 сентября 2008

Я хотел бы использовать Visual Studio 2008 в максимально возможной степени при эффективной компиляции / компоновке / сборке / и т.д. кода, как если бы все эти процессы сборки выполнялись с помощью инструментов, поставляемых с MASM 6.11. Точная версия MASM не имеет значения, если она находится в диапазоне 6.x, так как именно это использует мой колледж для обучения 16-битной сборке.

Я провел некоторое исследование по этому вопросу и пришел к выводу, что есть несколько вариантов:

  1. Переконфигурируйте VS для вызова исполняемых файлов MASM 6.11 с такими же флагами и т. Д., Как MASM 6.11 изначально делал бы.
  2. Создайте промежуточный пакетный файл (ы), который будет вызываться VS, чтобы затем вызывать соответствующие команды для компоновщика MASM и т. Д.
  3. Переконфигурируйте встроенные средства / правила сборки VS (ассемблер, компоновщик и т. Д.), Чтобы обеспечить среду, идентичную среде, используемой MASM 6.11.

Параметр (2) был вызван, когда я понял, что параметров, доступных в интерфейсе VS «Внешние инструменты», может быть недостаточно для правильного вызова инструментов сборки MASM, поэтому может быть полезен пакетный файл для интерпретации строгого метода передачи аргументов VS, Поскольку я много узнал о том, как заставить это работать, включил мой ручной вызов ML.exe, LINK.exe и т. д. из командной строки.

Ниже приведены несколько ссылок, которые могут оказаться полезными при ответе на мой вопрос. Пожалуйста, имейте в виду, что я прочитал их все, и ни одно из них не является реальным решением. Я могу только надеяться, что моя спецификация MASM 6.11 не помешает кому-либо дать, возможно, более обобщенный ответ.

Подобный метод используется в Варианте (2), но пользователи в потоке не могут связаться:
http://www.codeguru.com/forum/archive/index.php/t-284051.html
(также я сомневаюсь в необходимости промежуточного пакетного файла)

Устаревшее объяснение моего вопроса:
http://www.cs.fiu.edu/~downeyt/cop3402/masmaul.html

Вероятно, самое близкое, что я пришел к окончательному решению, но относится к набору инструментов от чего-то, кроме MASM, также использует командный файл:
http://www.kipirvine.com/asm/gettingStarted/index.htm#16-bit

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

Ответы [ 6 ]

4 голосов
/ 08 марта 2010

Файл правил MASM находится по адресу (32-разрядная система удаления (x86)):

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\VCProjectDefaults\masm.rules

Скопируйте этот файл в каталог вашего проекта и добавьте его в Пользовательские правила сборки для вашего проекта. Затем «Изменить файл правила ...», выберите правило сборки MASM и «Изменить правило сборки ...».

Добавить объект:

  • Тип свойства пользователя: Строка
  • Значение по умолчанию: *. Inc
  • Описание: Добавить дополнительные зависимости файла MASM.
  • Отображаемое имя: Дополнительные зависимости
  • Только для чтения: Ложь
  • Имя: Дополнительные зависимости
  • Название страницы недвижимости: Общая информация
  • Переключатель: [значение]

Установите значение дополнительных зависимостей на [AdditionalDependencies] . Теперь сборка должна автоматически обнаруживать изменения в *.inc, и вы можете редактировать свойства для отдельного asm-файла, чтобы указать другие.

2 голосов
/ 15 октября 2008

Я бы предложил определить правила пользовательской сборки в зависимости от расширения файла. (Visual Studio 2008, по крайней мере, в Professinal Edition, может создавать файлы .rules, которые можно распространять). Там вы можете определить пользовательские инструменты сборки для файлов asm. Используя этот подход, вы сможете оставить шаг компоновщика как есть.

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

2 голосов
/ 12 октября 2008

Вы можете создать проект makefile. В Visual Studio в разделе Файл / Создать / Проект выберите проект Visual C ++ / Makefile.

Это позволяет вам выполнить произвольную команду для построения вашего проекта. Это не обязательно должен быть C / C ++. Это даже не должен быть традиционный make-файл NMake. Я использовал его для компиляции драйвера, используя командный файл и используя скрипт NAnt.

Должно быть достаточно легко запустить инструментальную цепочку MASM 6.x.

1 голос
/ 22 сентября 2008

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

0 голосов
/ 15 ноября 2008

Почему бы тебе не воспользоваться гидом Ирвина? Библиотека Ирвина хороша, и если вы хотите, вы можете проигнорировать ее и напрямую работать с Windows Procs. Я искал такого гида, Ирвин был лучшим решением.

0 голосов
/ 10 октября 2008

Если вы собираетесь использовать Visual Studio, не могли бы вы дать им каркасный проект на C / C ++ с точкой входа для консольного приложения, вызывающего функцию с пустым встроенным блоком сборки, и позволяющей им заполнить свои результаты в этом?

...