使用 nasm 将 64 位指令组装成原始机器码

Bul*_*aza 5 x86 assembly x86-64 nasm

我想64-bit使用nasm. 如果我这样做,我会收到一个错误:

error: instruction not supported in 16-bit mode
Run Code Online (Sandbox Code Playgroud)

示例输入:

mov rax, 0x12345678
Run Code Online (Sandbox Code Playgroud)

示例命令:

$ nasm input.s -o output
Run Code Online (Sandbox Code Playgroud)

默认情况下,nasm使用假定为16-bit. 所有其他选项似乎都支持,64-bit但仅在生成完整执行/目标文件时而不是仅生成原始机器代码时才支持。

有没有办法使用二进制格式,64-bit而不是使用?

我找到了使用 完成此任务的另一种方法,GNU assembler但我想知道您是否也可以做同样的事情nasm

Bul*_*aza 7

添加BITS 64到程序集源文件的顶部就可以了。