Добавление чисел с плавающей запятой/двойных чисел в сборку

Я пытаюсь поэкспериментировать со встроенной сборкой и пытаюсь добавить десятичные числа (нет, НЕ целые числа )во встроенной сборке. Проблема в том, что когда я вызываю следующую функцию:

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?

6
задан Nico Erfurth 8 August 2012 в 05:04
поделиться