NASM 中的等效 MASM .const 部分

Ven*_*cat 2 assembly x86-64 masm nasm

下面的 MASM 代码的确切 NASM 等价物是什么?

; Simple lookup table (.const section data is read-only)
      .const
const_array dword 0, 1, 1, 2, 3, 5, 8, 13, 21
Run Code Online (Sandbox Code Playgroud)

zx4*_*485 6

因为.constMASM 指令表示只读段,所以您必须使用 NASM 等效项section .rdata1,它创建一个可读但不可写的段/节。

您可以使用该DD指令将 DWORD 放在任何地方;参见手册第 3.2.1 节。

最终结果可能如下所示:

section .rdata
  const_array:   dd 0, 1, 1, 2, 3, 5, 8, 13, 21
Run Code Online (Sandbox Code Playgroud)

:NASM 中始终建议使用后标签名称。

当该行上的第一个标记未被识别为指令助记符时,NASM 将假定它是标签。但始终使用它:来明确这一点是一个好习惯。


脚注1:

Windows 使用.rdata. 包括 Linux 在内的一些其他操作系统用于section .rodata 只读非可执行数据。