|
|
| Посл.отвђт | Сообщен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 |