· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Преобразование чисел

Посл.отвђт Сообщенiе


Дата: Сен 16, 2004 10:11:54

Научите, как преобразовать целое число в вещественное.
Такой вариант не прокатывает, их стека возвразается целое число:
fild [x]
fstp [x]

Как правильно делается?
Компилятор - FASM.


Дата: Сен 16, 2004 12:29:31 · Поправил: leo

aaleksander
Конкретно по FASM сказать не могу. Но общий совет - не полагаться на компилятор и явно указывать размер операндов:
fild dword ptr [offset i] ;dword
fst dword ptr [offset f] ;float\single 4 байта
fst qword ptr [offset d] ;double 8 байт
fstp tbyte ptr [offset t] ;extended 10 байт
Это должно работать всегда и везде.

А почему у тебя возвращается целое число:
1) либо "умный" компилятор заменяет fstp на fistp, если у тебя x определено как целое (хотя должен бы выдать Error)
2) либо fstp выдает все-таки double или extended, первый dword которых ты воспринимаешь как целое; если это так, то попробуй отрицательное число - результат должен измениться.


Дата: Сен 16, 2004 13:17:35

Вот код который компилируется FASM'ом и работает без проблем:
  fild  [foo]
  fstp  [foo]

  foo   dd -2 


А вот так можно сразу загружать вещественные числа:
  fld  [foo]

  foo   dd -2.0 


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.072