8

我想编写 64 位 Windows 程序集(最好使用 NASM)。我在谷歌上看起来很不错,但似乎找不到 64 位 Windows 编译器。一些网站提到了 ml64,但它似乎不再包含在 VC++ 中。我尝试过使用 32 位汇编,但显然它只是在我的 64 位机器上崩溃了。是否可以在 64 位 Windows 机器上编写、编译和运行 32 位汇编应用程序?还是应该为 64 位编写和编译?

谢谢。

4

2 回答 2

6

Yasm(*) 是一个现代的、多平台的 NASM 重写的汇编器,能够为 x86 和 AMD64/x86-64 指令集进行汇编。

但是......您可能的意思是您需要一个链接器来链接组装的目标代码/文件以创建可执行文件。至少完全免费的 MinGW(Minimal GNU for Windows)项目包附带了一个链接器(称为 ld),它能够从目标文件(至少是 ELF 和 PE 目标格式)组装 32 位和 64 位 Windows 可执行文件。

您绝对可以在 64 位环境中交叉编译/构建 32 位项目,反之亦然,前提是您为汇编器和链接器提供了正确的命令行参数。请参阅您选择的工具的文档以获取更准确的详细信息。

*) http://yasm.tortall.net/

于 2012-05-23T02:40:28.833 回答
3

可以在 64 位 Windows 上编写、汇编和运行 32 位汇编。我在我的 Windows 7 x64 机器上用 masm32 编写了一些实用程序。如果要汇编 64 位代码,我相信 FASM 支持 64 位目标代码。

于 2012-05-22T19:48:36.230 回答