FPU сравнения

Тема в разделе "WASM.BEGINNERS", создана пользователем Drakon Rider, 8 ноя 2007.

  1. Drakon Rider

    Drakon Rider New Member

    Публикаций:
    0
    Регистрация:
    15 окт 2002
    Сообщения:
    21
    Адрес:
    Russia
    где есть описание сравнений вида

    fcomp
    fnstsw ax
    test ax, xx (41h, 01h, ...)
    jxx

    т.е. чтобы выяснить какое условие проверялось ? ... пока пытаюсь сопоставить биты fpu status word и типовые 41h - получается это биты SF, D - и как они при сравнении ставятся ?

    сделал программу на сях с разными сравнениями - получется вроде 41h это <=, остальные это 44h для == и != и and eax 100h, jne для >= , но что тогда 01h ??? пример:

    fcompp
    fnstsw ax
    test ah, 01h
    jnz m01
     
  2. 10110111

    10110111 New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    319
    Адрес:
    Санкт-Петербург
    bit number 14 10 9 8
    bit name C3 C2 C1 C0
    CPU FLAG ZF PF 1 CF

    Почитай доки Интел.
     
  3. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    Drakon Rider
    используй команды FCOMI,FCOMIP,FUCOMI,FUCOMIP -- они изменяют непосредственно EFLAGS т.е.
    Код (Text):
    1. FCOMI st(1)
    2. jnz a1
     
  4. Drakon Rider

    Drakon Rider New Member

    Публикаций:
    0
    Регистрация:
    15 окт 2002
    Сообщения:
    21
    Адрес:
    Russia
    угу - нашел... буду compps юзать - оно быстрее для нескольких сравнений сразу... потом вот только биты собирать и проверять надо быстро...