эквивалентный раздел MASM .const в NASM - PullRequest
0 голосов
/ 27 января 2020

Каков точный эквивалент NASM приведенного ниже кода MASM?

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

1 Ответ

3 голосов
/ 28 января 2020

Поскольку директива .const MASM обозначает сегмент только для чтения , вы должны использовать эквивалент NASM section .rdata 1 , который создает сегмент / секцию, которые доступны для чтения, но не для записи.

Вы можете поместить DWORD где угодно, используя директиву DD; см. Раздел 3.2.1 руководства.

Окончательный результат может выглядеть следующим образом:

section .rdata
  const_array:   dd 0, 1, 1, 2, 3, 5, 8, 13, 21

A : после имен меток всегда рекомендуется в NASM .

Когда первый токен в строке не распознается как инструкция mnemoni c NASM будет считать, что это метка. Но это хорошая привычка всегда использовать :, чтобы сделать это однозначным.


Сноска 1:

Windows использует .rdata. Некоторые другие ОС, включая Linux, используют section .rodata для неисполняемых данных только для чтения.

...