是否可以使用 Visual Studio 编写 intel 程序集?

Posted

技术标签:

【中文标题】是否可以使用 Visual Studio 编写 intel 程序集?【英文标题】:Is it possible to use Visual Studio to write intel assembly? 【发布时间】:2012-01-15 01:09:25 【问题描述】:

正如标题所说,是否可以在 Visual Studio 中编写汇编代码?

我正在寻找一个易于使用的 IDE 来编写英特尔汇编语言。几个月前我查看了一些 IDE,除非它们需要大量配置设置(我将示例复制并粘贴到 IDE 中),否则它们将无法工作......

必须有一个与 VS 非常相似的简单 IDE,您可以在其中编写程序集、选择 CPU 并执行?

【问题讨论】:

【参考方案1】:

Visual Studio 中的内联汇编器并不可靠,但您可以将 Visual Studio 与 MASM (the Microsoft Macro Assembler) 结合使用来编写直接的汇编程序。

http://social.msdn.microsoft.com/Forums/en/vcgeneral/thread/c53fd4fd-e239-464a-b512-2b2fc8745c88 http://msdn.microsoft.com/en-us/library/afzk3475.aspx http://www.masm32.com/index.htm http://www.daniweb.com/software-development/cpp/threads/8072 http://www.infernodevelopment.com/introduction-masm32

在汇编中编写打开窗口、设置输出、的“胶水”代码是相当痛苦的,因此您可能会发现用 C++ 编写大部分程序会更舒服,而且只需汇编中的几个文件。这样您就可以从直接汇编中编写简单的测试函数开始,然后从您的 C++ 框架中调用它们。

【讨论】:

@Nocturn :x64 不支持。 (msdn.microsoft.com/en-us/library/4ks26t93.aspx) 另外,我注意到一些代码生成错误,在我内联汇编到 C++ 函数中间的情况下——比如如果我有一个大函数,在它中间我使用一个 __asm 块来尝试要将 C++ 变量加载到寄存器中,有时会加载错误的变量,或者寄存器会被破坏。它不经常发生;我认为这只是微软不再支持内联汇编器,并且开始出现罕见的错误。 @Nocturn still 对我有用(无论如何在 x86 中),是编写全部是汇编的 __declspec(naked) 函数,然后从 C 中调用它们。我没有还没有遇到任何编译器错误。我有时也会使用普通的内联汇编,但我必须在之后检查生成的代码(例如使用 /FACS)以确保它正确。【参考方案2】:

这应该可以帮助你Setting Up Visual Studio 10 for MASM32 Programming

【讨论】:

以上是关于是否可以使用 Visual Studio 编写 intel 程序集?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 C# 中编写 Visual Studio Code 扩展

是否可以在 Visual Studio 中编写 Android 编程代码?

省略号交换机案例Visual Studio等效

是否可以使用 Visual Studio 获取集成测试的代码覆盖率数据?

使用 Visual Studio 发布应用程序

我可以在 Visual Studio 中设置 LARGEADDRESSAWARE 吗?