Короче дело вот в чем. Работаю я, занчит, с функциями которые принимают в качестве параметров real32 и real64 значения, и в процессе меня просто "убило", то что масм абсолютно не дружит с floating point форматом чисел (я имею в виду непосредственные операнды-immediate), т. е. такие абсолютно простые вещи как например push 1.0 он не хавает - компилер пишет что-то вроде real or BCD not allowed, хотя определять real в памяти масм умеет (DD 1.0 или DQ 1.0 все ок числа - float), поэтому приходится извращатся, писать макросы для загонки real immediate в стек Если с real32 ограничилось все простеньким макро типа: pushr32imm MACRO val DB 68h DD val ENDM то с real64 у меня че-то ничего невыходит перечитал несколько манов все равно ничего путного не нашел. Знаю как сделать на fasme, но нужно именно masm. Для real64 переменных работает такой макро: pushr64m MACRO var push DWORD PTR var+4 push DWORD PTR var ENDM С этого начал. В фасме есть такая фича как виртуальные вычисления для макро, а в масме? Если кто знает как сделать, наставьте на путь истинный
Как один из вариантов: Код (Text): pushdl macro double1 fld qword ptr [&double1&] sub esp,8 fstp qword ptr [esp] endm
Я не про переменные в памяти говорил а про непосредственные значения, т.е. чтобы макрос работал так: например pushdl 1.0 сгенерил код Код (Text): push 3ff00000 push 00000000