Форум: "Основная";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
ВнизЧто за загадочный FPower10? Найти похожие ветки
← →
Konstantin (2004-01-12 15:18) [0]Скажите пожалуйста может кто знает что делает процедура FPower10? В хэлпе её нет, единственное место где она светится это модуль system, но там только заголовок, но что самое интересное она компилируется и запускается...
← →
Petrovich (2004-01-12 15:24) [1]Вот как раз оттуда:
// This routine generates 10**power with no more than two
// floating point multiplications. Up to 10**31, no multiplications
// are needed.
← →
GLFox (2004-01-12 15:25) [2]А че? Там все так и написано (дословно):
This routine generates 10**power with no more than two
floating point multiplications. Up to 10**31, no multiplications are needed.
← →
Konstantin (2004-01-12 15:31) [3]А теперь расшифруйте пожалуйста это всё...
... генерирует 10 ... питание не более чем с 2-мя плавающими точками .... Вплоть до 10 ... 31 , ... не трубуется.
Ничё не понятно, это максимум что я перевёл, я правда не особо силён в английском...
← →
Petrovich (2004-01-12 15:35) [4]power - это степень, но все равно непонятно :-)
По идее 10 в степени, но параметры явно не передаются.
Через вот это:
// -> FST(0) val
// -> EAX Power
// <- FST(0) val * 10**Power
← →
VMcL (2004-01-12 15:36) [5]>>Konstantin © (12.01.04 15:31) [3]
Вообще-то за переводом с англ. не на этот форум.
Но: "Power" = "степень" в данном контексте.
← →
Dimka Maslov (2004-01-12 16:00) [6]Процедура вычисляет 10 в целочисленной степени за не более чем две опраци умножения с вещественными числами. Используется исключительно компилятором.
← →
Konstantin (2004-01-15 15:25) [7]Спасибо, но я не всё понял, во первых как понять используется только компилятором? Во вторых, а что она вычисляет то, если это *процедура* и без параметров?
← →
AKul (2004-01-15 16:01) [8]Функция служит для очень быстрого вычисления выражения
(число)*10**(степень)
Под "Не имеет" параметров здесь имели в виду, что она описана в Delphi, как функция без параметров.
На самом деле параметры ей передаются через регистры:
в EAX - степень
в ST(0) - число, на которое надо умножить 10**степень.
Результат возвращается в ST(0).
На счет того, что функция используется только компилятором Dimka Maslov © [6] не прав.
Функцию можно вызывать из ассемблерной вставки, например так:
...
var Number,Res:single;
...
begin
...
Number:=5; //число
asm
finit
mov eax,1 // степень (можно использовать переменную вместо константы)
fld Number
call FPower10
fstp Res // теперь Res содержит результат
end
....
← →
Konstantin (2004-01-15 17:00) [9]Спасибо большое, теперь разобрался.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c