Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.01.2011, 17:48   #1
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию как установить 64-разрядную точность для типа Extended

вычитал про такой код
Код:
asm
 FSTCW  MyCW
 AND     MyCW,0FCFFh
 OR      MyCW,200h
 FLDCW   MyCW
end;
который в управляющее слово записывает 53-разрядную точность для типа extended.
вырвано из текста
.......Если восьмой бит содержит единицу (так установлено по умолчанию), то десять байт внутренних регистров сопроцессора будут использоваться полностью, и мы получим «полноценный» Extended. Если же этот бит равен нулю, то всё определяется значением бита 9. Если он равен единице, то используются только 53 разряда мантиссы (остальные всегда равны нулю). Если же этот бит равен нулю – только 24 разряда мантиссы. Это увеличивает скорость вычислений, но уменьшает точность. Другими словами, точность работы сопроцессора может быть понижена до типа Double или даже Single. Но это касается только мантиссы, экспонента в любом случае будет содержать 15 бит, так что диапазон типа Extended сохраняется в любом случае.......
конец цитаты

16-ричные цифры знаю. про "FSTCW" и "FLDCW" уже прочёл.
объясните пожалуйста что делают 2 и 3 строки кода.
и если кто знает, то принцип установки точности.







ВСЁ , РАЗОБРАЛСЯ. СПАСИБО ЗА ВНИМАНИЕ.)

Вдруг кому надо будет:
111...............................1 00
and...............................a nd
101...............................0 11
=101.............................=0 00
оператор AND сверяет побитно два числа: 1 and 1=1 все остальные варианты дадут нули

010...............................1 01
or................................. ..or
101...............................0 11
=111.............................=1 11
оператор OR сверяет побитно два числа: 0 or 0=0 все остальные варианты дадут единицы.

ну и на последок:
24-значная точность
Код:
asm
 FSTCW  MyCW
 AND     MyCW,0FCFFh
 FLDCW   MyCW
end;
64-значная точность
Код:
asm
 FSTCW  MyCW
 OR     MyCW,200h
 FLDCW   MyCW
end;
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 12.01.2011 в 20:51.
Rin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как умножить переменную типа byte на integer или extended (Delphi 7) IronFire Помощь студентам 2 23.10.2010 18:04
Вывод числа типа Extended Ilya_L Общие вопросы Delphi 5 03.08.2010 09:00
Как установить библиотеку GMP для PHP? motorway PHP 3 21.10.2009 16:58
Точность типа float HunterMan Общие вопросы C/C++ 6 07.02.2009 23:05
как установить компоненты SUISkin для Delphi 7? beegl Компоненты Delphi 3 07.02.2009 16:52