Objconv предлагает немедленное расширение с нулевым расширением, но movzx не работает

Objconv Агнера Фога показывает несколько случаев в моей исходной дизассемблировании, где появляется сообщение "Примечание: непосредственный операнд можно уменьшить с помощью нулевого расширения".

Например, он появляется прямо над этими двумя строками:

mov rdi,out_fname_L

mov rsi,file_mode_open_read

непосредственно перед звонком в fopen.

out_fname_L определяется в разделе.data как:

out_fname_L: db "/opt/Output_Data/A_Output_40MB",0x00

Я пробовал это:

movzx edi,out_fname_L
movzx edi,dword out_fname_L
movzx edi,qword out_fname_L
movzx edi,byte out_fname_L (because it's a db memory operand)

но ни один из них не работает. NASM отвечает "недопустимой комбинацией кода операции и операндов". Операнд памяти - это 64-битный адрес.

В чем моя ошибка?

Собран на ассемблере NASM для Ubuntu 18.04.

0 ответов

Другие вопросы по тегам