Я пытаюсь поэкспериментировать со встроенной сборкой и пытаюсь добавить десятичные числа (нет, НЕ целые числа )во встроенной сборке. Проблема в том, что когда я вызываю следующую функцию:
inline double ADD(double num1, double num2) {
double res;
_asm{
push eax; push the former state of eax onto stack
mov eax, num1;
add eax, num2;
mov res, eax;
pop eax; restore the former state of eax now that we are done
} return res;}
Компилятор жалуется на неправильный размер операнда во встроенном ассемблере (ВСЕ строки ассемблера, за исключением строк инструкций push и pop ). Поэтому мне нужно перейти на целочисленный тип, такой как unsigned long, и тогда он работает, но, конечно, поддерживает только целочисленные типы; десятичные результаты округляются.
Есть ли способ добавить в сборку, которая допускает десятичные результаты, такие как 8,4?