Интересно, как встроить использование fbstp в 32-битную архитектуру I86.Я пробовал что-то вроде
int main( )
{
double foo = 100.0;
long bar = 0;
asm( "pushl %1; fbstp %0"
: "=m"(bar)
: "r"(foo)
);
...
Но бар не изменился.Я попытался прочитать все, что я могу найти по этому вопросу, но в большинстве примеров просто делайте такие вещи, как сложение двух целых чисел.Я не могу найти ничего такого, что говорило бы о переносе операндов в стек и о том, что я должен делать, когда такая инструкция, как fbstp, записывает 80 бит данных обратно в память (т.е. какой тип C использовать) и как указать это в синтаксисе asm.
Также на x86-64, кажется, есть pushq и нет pushl, но fbstp все еще существует, тогда как fbstq нет.Есть ли какая-то другая магия для 64 бит?