2015-10-06 2 views
3

Ниже не компилируется:Лазарус ФПК отказа в 64-битное значение для О.П. в ASM

and rax, $7FFFFFFFFFFFFFFF 

Я пытался сделать значение постоянной, даже отливают в виде QWORD, но компилятор бросает «Значение dword превышает границы».

Конечно, это слово, а не слово. Как заставить компилятор реализовать это?

В качестве примечания, 64-разрядный код в противном случае компилируется и работает правильно.

У меня есть последний выпуск Lazarus.

ответ

5

В наборе команд x86 нет варианта AND, который принимает операнд imm64. Вы можете использовать mov r64, imm64, а затем and r/m64, r64.

+0

Вау, я этого не ожидал. Спасибо. – IamIC

+1

@IanC: Создание немедленных операндов в режиме 64 бит в длинном режиме будет иметь раздутый код. Представляя множество новых кодов операций с операндами imm64, вы использовали бы много опкодов и добавили сложности декодерам. –

 Смежные вопросы

  • Нет связанных вопросов^_^