Всем доброго времени суток!
Со странным поведением masm (VS 2010) столкнулся я только что. Проинтегрировал .asm в проект VS 2010 и пишу тестовый файл с функцией:
.DATA
tmp db 1024 dup(0)
.CODE
test_func PROC
lgdt buffer
ret
test_func ENDP
END
Пор всем мануалам по ассемблеру такое должно транслироваться в бинарный код на раз. Однако masm выдаёт мне ошибку A2024:invalid operand size for instruction. Используется 64-разрядная сборка проекта, запуск трансляции идёт через ml64.exe, я проверял. Прогнал инструкцию lgdt через встроенный ассемблер на 32 разрядной сборке- всё путём. Попробовал использовать что-то типа "lgdt qword ptr buffer"- также не помогло. Может, кто знает, в чём тут дело и чего от меня хочет ml64?