Главная страница
    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.008 c
6-93595
sr
2003-11-25 14:55
2004.01.29
Терминал


4-93730
Rimd
2003-11-24 00:27
2004.01.29
CreateWindow


1-93529
Navi
2004-01-17 07:28
2004.01.29
Синхронизировать два StringGrid-а


1-93524
Chlavik
2004-01-18 13:25
2004.01.29
ListView и Background (ListView_SetBkImage не работает)...


3-93362
WG
2003-12-30 12:13
2004.01.29
Как упорядочить записи в БД по алфавиту ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский