6

我想尽可能地使用 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 使用的环境相同的环境。

当我意识到 VS 的“外部工具”界面中可用的选项可能不足以正确调用 MASM 的构建工具时,选项 (2) 被提出,因此解释 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 -少量

如果我在代码的每个步骤中使用的工具的术语 - > exe 进程已关闭,我深表歉意,但由于我试图在完成编写代码和生成可执行文件之间重现所有步骤,所以我不认为这很重要。

4

6 回答 6

4

有一个 MASM 规则文件位于(32 位系统删除(x86)):

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

将该文件复制到您的项目目录,并将其添加到您的项目的自定义构建规则中。然后“修改规则文件...”,选择MASM构建规则和“修改构建规则...”。

添加属性:

  • 用户属性类型:字符串
  • 默认值:*.inc
  • 说明:添加额外的 MASM 文件依赖项。
  • 显示名称:附加依赖项
  • 只读:False
  • 名称:附加依赖项
  • 属性页名称:General
  • 开关:[值]

将 Additional Dependencies 值设置为[AdditionalDependencies]。构建现在应该会自动检测对 的更改*.inc,并且您可以编辑单个 asm 文件的属性以指定其他文件。

于 2010-03-08T17:16:51.080 回答
2

您可以创建一个 makefile 项目。在 Visual Studio 中,在 File / New / Project 下,选择 Visual C++ / Makefile 项目。

这允许您运行任意命令来构建您的项目。它不必是 C/C++。它甚至不必是传统的 NMake makefile。我用它来编译一个使用批处理文件的驱动程序,并使用一个 NAnt 脚本。

让它运行 MASM 6.x 工具链应该相当容易。

于 2008-10-12T09:15:14.913 回答
2

我建议根据文件扩展名定义自定义构建规则。(Visual Studio 2008,至少在专业版中,可以生成 .rules 文件,可以分发)。在那里,您可以为 asm 文件定义自定义构建工具。通过使用这种方法,您应该能够保持链接器步骤不变。

回想起来,我们使用 MASM32链接文本作为 IDE 来帮助学生学习汇编。您可以检查他们的批处理文件来组装和链接。

于 2008-10-15T18:53:01.720 回答
1

而不是批处理文件,为什么不使用文件上定义的自定义构建步骤?

于 2008-09-21T23:58:32.447 回答
0

如果你打算使用 Visual Studio,你不能给他们一个 C/C++ 框架项目,其中包含一个控制台应用程序的入口点,该应用程序调用一个具有空内联汇编块的函数,并让他们在其中填充结果吗?

于 2008-10-10T16:20:41.640 回答
0

为什么不使用 Irvine 的指南?Irvine 的库很好,如果你愿意,你可以忽略它并直接使用 Windows procs。我一直在寻找这样的指南,尔湾的是最好的解决方案。

于 2008-11-15T03:54:10.677 回答