Как указать немедленные числа с плавающей запятой с помощью встроенной сборки?

Когда я пытаюсь скомпилировать этот код:

#include <stdio.h>

main(int argc, char *argv[]) {
   double y = 0;

   __asm__ ("fldl $150;"
            "fsqrt;"
            "fstl %0;" : : "g" (y) );

   printf("%f\n", y);


   return 0;
}

, я получаю эту ошибку:

sqrt.c: Assembler messages:
sqrt.c:6: Error: suffix or operands invalid for `fld'

Почему это не работает? Почему я не могу поместить число «150» в стек для операций с плавающей запятой?

9
задан Peter Cordes 22 June 2019 в 16:50
поделиться