Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-93463
Cerber
2004-01-14 18:41
2004.01.29
Файлы


1-93528
RustamBek
2004-01-19 10:36
2004.01.29
Межстрочный интервал в TRichEdit


8-93592
Zheks
2003-08-26 15:35
2004.01.29
растягиваемый круглый Shape


9-93325
Филипп
2003-07-14 09:20
2004.01.29
3D коридор


1-93484
race1
2004-01-15 17:05
2004.01.29
canvas.textrect





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский