Команды загрузки данных в FPU. Глюки

Тема в разделе "WASM.ASSEMBLER", создана пользователем rpy3uH, 12 ноя 2008.

  1. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    Пишу процедуру преобразования float значения в строку. я знаю что есть куча готовых исходников, пишу чисто от балды :)
    После некоторого времени команды загрузки чисел загружают ерунду (-NAN FFFF C0000000 00000000). Ну например, команда fld1 загружает -NAN FFFF C0000000 00000000. Почему?
     
  2. JAPH

    JAPH New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2007
    Сообщения:
    124
    Наверное при этом происходит переполнение стэка сопроцессора?..
     
  3. PaCHER

    PaCHER New Member

    Публикаций:
    0
    Регистрация:
    25 мар 2006
    Сообщения:
    852
    Мне кажется с балдой чтото не так. Помоему для начало в балду нужно поместить хотябы базовые информационные данные про работу с FPU, ну и другие исходники посомтреть. И тогда ошибка балды ликвидируется.
     
  4. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.787
    rpy3uH, попробуй перед загрузкой числа (при условии что данные в st(0)-st(7) уже не нужны) поставить команду FINIT [​IMG]
     
  5. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    FNINIT лучше. Но это не выход - при нормальном написании кода глюков быть не может (сколько раз уже в этом убеждался).
     
  6. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    А почему бы не использовать для преобразования вещественных чисел в строку команды обычного процессора, а на счет ошибки с сопроцессором - посмотри регистр состояния, скорее всего у вас действительно переполнение стека.
     
  7. rpy3uH

    rpy3uH New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2006
    Сообщения:
    503
    всё понял. всем спасибо.
     
  8. Memphis

    Memphis New Member

    Публикаций:
    0
    Регистрация:
    23 окт 2008
    Сообщения:
    104
    JAPH
    Наверное при этом происходит переполнение стэка сопроцессора?.. - не наверное, а действительно стек переполнен. Прав на 100%. Помогает только инициализация ФПУ, как правильно выше заметили.

    rpy3uH
    Пишу процедуру преобразования float значения в строку - сам прошел/написал это. Кстати, потратил довольно много времени. И не потому, что это сложно написать. Искал алгоритм, дающий всегда максимальную точность. Поэтому и прога получилась не очень короткая. В результате написал резидентную прожку - показ состояния ФПУ, незаменима при отладке прог для ФПУ.