Помощь - Поиск - Пользователи - Календарь
Полная версия: Быстро умножить вещественное число на степень двойки.
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ассемблер
TarasBer
Как это сделать, не прибегая к fmul? Есть ли для этого специальная команда?
andriano
Это зависит т формы записи числа.
Если с фиксированной точкой, то число сдвигается влево на количество разрядов равное показателю степени.
Если в экспоненциальном, то к экспоненте прибавляется показатель степени.
TarasBer
Цитата(andriano @ 31.10.2009 22:53) *

Это зависит т формы записи числа.
Если с фиксированной точкой, то число сдвигается влево на количество разрядов равное показателю степени.

Было б всё так просто. Увы, у меня плавающая точка.
Цитата

Если в экспоненциальном, то к экспоненте прибавляется показатель степени.

Это-то понятно, но как обратиться именно к экспоненте? Есть ли специальная команда у сопроцессора?
Lapp
Цитата(TarasBer @ 31.10.2009 22:59) *
Есть ли специальная команда у сопроцессора?
TarasBer, ты всерьез полагаешь, что команда сопроцессора включена в Паскаль? Пожалуйста, посмотри вот это: КО ВСЕМ УЧАСТНИКАМ ФОРУМА .

М
Тема переносится из Теретических Вопросов в Ассемблер

volvo
Цитата
Как это сделать, не прибегая к fmul?
Через FSCALE ...
TarasBer
Спасибо, вроде разобрался.
Надо записать в стек 2 числа, первое из них - степень, второе - то, что скалим, потом не забыть вынуть из стека тоже 2 числа.
andriano
Стек - не единственное место, куда можно положить.
Можно, например, воспользоваться оперативной памятью. (это не тавтология, стек не обязан располагаться в ОЗУ)
Можно выделить из числа нужные биты, изменить их и вписать обратно. Но вероятнее всего, это займет больше времени как в процессе кодирования, так и выполнения.
TarasBer
Цитата(andriano @ 1.11.2009 13:53) *
Но вероятнее всего, это займет больше времени как в процессе кодирования, так и выполнения.


Да я надеюсь. Иначе нафиг этот сопроцессор нужен, если ручная эмуляция быстрее.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.