MS Visual Studio 2010如何使用.asm生成的文件

时间:2011-10-11 22:05:10

标签: c++ visual-studio-2010 assembly

我想问一下我想用Visual Studio 2010尝试的东西。

我通过在项目属性中将“Assembler Output”选项设置为>来从.cpp文件生成.asm文件。 C / C ++ - >输出文件(/ FAs)。

我的问题是,我怎样才能在下一步使用.asm生成的文件再次从该文件链接而不再使用.cpp文件,以防我想在.asm文件中进行一些修改然后链接再次通过保持我在装配级别所做的修改。

如果您能提供确切的步骤,包括项目属性中可能需要的正确配置,那将非常有用。

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

我最近这样做了。这是我在这里给出的答案的重复compile-assembly-output-generated-by-vc。事实证明你仍然可以在MSVC2012中以32位模式执行此操作,但我认为64位模式是没有希望的。

对于32位模式,这就是你要做的。

创建一个空项目和一个源文件 Source.cpp

 #include <stdio.h>
 int main() {
     printf("hello world\n");
     return 0;
 }
  1. 右键舔项目并选择“构建自定义”和
    选择masm,如http://www.masm32.com/board/index.php?topic=9231.0
  2. 所述
  3. 在C ++ / OutputFiles下选择Assembly Output / FA
  4. 以32位模式发布模式
  5. Source.asm 文件加载到MSVC中,以便查看。它还行不通。仍然需要做一些改变。
  6. 在C ++ / Optimization下关闭整个程序优化(删除/GL)。这会添加行INCLUDELIB MSVCRT
  7. 在链接器/高级设置中,将最后一个选项“图像具有安全异常处理程序”设置为否(/SAFESEH:NO
  8. 现在你应该有一个Source.asm文件,它将执行与Source.cpp文件相同的操作。将Source.cpp从Release目录复制到Source.cpp所在的目录(因此在构建/清理时不会删除它。)
  9. Source.asm (作为现有文件)添加到源文件,并从构建中删除 Source.cpp
  10. 重建,您应该看到“Hello World”而无需手动更改任何装配线。
  11. 我已经将它用于更复杂的功能。我通常在一个单独的模块上执行它,并在函数名称上使用extern "C"来删除C ++名称修改。

答案 2 :(得分:0)

只需将.obj文件拖到Project(解决方案资源管理器树)中: How to include .obj files into the project