"Оптимизация для PENTIUM процессора" - читать интересную книгу автораМанипулирование с битом знака. Вы можете изменить знак числа с плавающей точкой, просто флипнув бит знака. Пример: XOR BYTE PTR [a] + (TYPE a) - 1, 80H Таким же образом, вы, можете получить модуль число с плавающей точкой, просто применив AND. Сравнение чисел: Числа с плавающей точкой хранятся в уникальном формате, который позволяет вам использовать целочисленные инструкции для их сравнение, исключая бит знака. Если вы уверены, что оба числа с плавающей точкой нормальные(коррект- ные? прим. переводчика) и положительные, то вы можете их просто сравнить как целые числа. Пример: FLD [a] / FCOMP [b] / FNSTSW AX / AND AH,1 / JNZ ASmallerThanB Заменить на: MOV EAX,[a] / MOV EBX,[b] / CMP EAX,EBX / JB ASmallerThanB Этот метод позволяет сравнить два числа с плавающей точкой, если вы уверены, что оба числа имеют одинаковую точность и не отрицательные. занкозначимое сравнение: MOV EAX,[a] MOV EBX,[b] MOV ECX,EAX MOV EDX,EBX SAR ECX,31 ; копируем бит знака AND EAX,7FFFFFFFH ; удаляем бит знака SAR EDX,31 AND EBX,7FFFFFFFH XOR EAX,ECX ; делаем 2 дополнения, если бит знака установлен XOR EBX,EDX SUB EAX,ECX SUB EBX,EDX CMP EAX,EBX JL ASmallerThanB ; знакозначимое сравнение Этот метод работает только для нормальных(корректных? прим. переводчика) чисел с плавающей точкой, включая -0. 19. ЧИСЛА С ПЛАВАЮЩЕЙ ТОЧКОЙ ВМЕСТО ЦЕЛЫХ ЧИСЕЛ =============================================== 19.1 Перемещение данных |
|
|