c++ - 如何将 ASM obj 文件与 C++ 程序集成?

标签 c++ visual-studio-2010 visual-c++ masm masm32

<分区>

我想在 Visual Studio 2010 中集成 ASM 和 C++ 代码。基本上,我希望能够在我的 C++ 代码中使用在 ASM 中创建的某些例程。

所以我想知道:

  1. 首先如何将 ASM obj 文件添加到 VS2010?
  2. 如何从代码的 C++ 部分调用 ASM 代码中的函数?
  3. 假设我创建了一个函数(在 ASM 中)计算一个值并将该值存储在税务登记簿中。假设它称为计算。我能否使用类似以下内容的 C++ 接收返回值:int val=compute();

最佳答案

所有这些样本都有你需要的:

http://msdn.microsoft.com/en-us/library/t13a3526%28v=VS.80%29.aspx

您必须让 visual studio 自动将它们“转换”为新的项目格式,但我只是用 PRIMESSTEP2 示例进行了尝试,它成功了。

您只需要一个函数原型(prototype),例如:

void sieve(void);  // prototype for Sieve of Eratosthenes function

然后你可以在 asm 中实现它们,它们将链接在一起。您通过将值放入 EAX 寄存器来返回值,它将作为 C/C++ 中的返回值出现。

关于c++ - 如何将 ASM obj 文件与 C++ 程序集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7700205/

相关文章:

c++ - g++ - 无法链接到使用 VS2012 构建的静态库

.net - 在 Windows Phone 7.1 中发送 HTTP 请求时出错

visual-studio-2010 - 扩展 Visual Studio 2010 C# Intellisense?

visual-studio-2010 - wchar_t 在 Visual Studio 中是 2 字节,存储 UTF-16。 Unicode 感知应用程序如何处理 U+FFFF 以上的字符?

c++ - Visual Studio 中的 "wcs"和 "_w"和 "_mbs"前缀

c++ - QList<T>::operator[] 中的 ASSERT 失败: "index out of range"

c++ - 调用 COM Release() 函数后指针是否应该设置为空?

c++ - C++中的字符串大写函数

c# - 我在 Mysql 中遇到希伯来语问题。我与 Visualstudio10、连接器和 linq 一起使用。我能做些什么?

C++ lambda 两次复制构造函数调用