【问题标题】:x64 assembler for system programming用于系统编程的 x64 汇编器
【发布时间】:2014-11-15 02:22:02
【问题描述】:

我想做系统编程,我需要组装一些我要做的事情。问题是,我找不到 64 位计算机的汇编程序。我试过 TASM 和 NASM。使用 TASM,它不会让我组装任何东西,使用 NASM,生成的可执行文件说它与我的计算机不兼容。还有其他我可以使用的汇编程序吗? (我不想使用需要 AT&T 语法的)

【问题讨论】:

  • GNU 汇编器也提供使用 intel 语法。你可能想看看stackoverflow.com/questions/9347909/…
  • nasm 应该可以正常工作,你做错了什么。我猜你使用了错误的输出格式或忘记链接...
  • 还有fasm
  • yasmnasm 以及 as(gas)都适用于 x86_64。确保您正在为正确的架构进行编译。

标签: assembly


【解决方案1】:

如果您使用的是 Linux x86_64

$ nasm -f elf -g -F stabs FOO.asm 
$ ld -o FOO FOO.o -melf_i386

生成可以在 32 位或 64 位计算机上运行的 32 位文件。
$ 是 Linux 操作系统“bash”控制台的命令行提示符。 (FOO 是一个示例文件名)

$ nasm -f elf64 -g -F stabs FOO.asm 
$ ld -o FOO FOO.o

再次为 Linux 操作系统生成 64 位可执行文件。 MS windows 将使用不同的 例如,用 win32 或 win64 等命令代替 elf 或 elf64。

$nasm -hf 

将为您提供更多信息。 抱歉,我在 15 年前抛弃了 Windows 转而使用 Linux。 我自己只是一个组装初学者,所以这就是我所能提供的。希望对您有所帮助。

【讨论】:

    【解决方案2】:

    如果您运行的是 Windows,Visual Studio Express(免费)包括 ml64.exe,一个 64 位汇编程序。调用 ml64.exe 需要自定义构建步骤,我认为您在第一次尝试此操作时会收到提示,但我手动创建该步骤。我先创建一个空项目,然后选择项目,属性,配置管理器,,选择x64,生成一个64位的可执行文件。对于自定义构建步骤

    用于调试构建:

    Command Line:
    ml64 /c /Zi /Fo$(OutDir)\example.obj example.asm
    
    Outputs:
    $(OutDir)\example.obj
    

    对于发布版本:

    Command Line:
    ml64 /c /Fo$(OutDir)\example.obj example.asm
    
    Outputs:
    $(OutDir)\example.obj
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      • 1970-01-01
      • 2010-12-18
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多