frndint глючит, или я?

Тема в разделе "WASM.BEGINNERS", создана пользователем sinth, 15 май 2008.

  1. sinth

    sinth New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2008
    Сообщения:
    12
    Здрассьте всем!

    В WIN32 приложении в оконной процедуре вызывал функцию, содержащую примерно такой код (пешу на VC++ 6):

    Код (Text):
    1. //*********************//
    2.  
    3. double dtemp;
    4. long    ltemp;
    5. char   stemp[256];
    6.  
    7. //*********************//
    8.  
    9. __asm {
    10. fld dtemp;
    11. frndint;
    12. fist ltemp;
    13. };
    Программулина должна определять частоту процессора с точностью до десятой доли мегагерца (получаю значение частоты в герцах и делю на 10000, полученный результат по-идее должен округляться приведенной ассемблерной вставкой и выдавать частоту в сотнях килогерц). Извращаюсь так потому, что пользуюсь чистым API с полной "липосакцией" и отказом от стандартных библиотечных функций:

    wsprintf(stemp, "%d.%d MHz", ltemp/10, ltemp%10);

    Пробовал - работает на iP733, Athlon 3800 x2, Sempron 3200 (все под ХР)...
    А вот запустил на сервере с двумя двухяйцевыми Xeon и Win Server2003 - работает нормально секунды 2-3, а потом начинает выдавать всякую бяку...

    В чем дело? Заранее спасибо.
     
  2. deadly83

    deadly83 New Member

    Публикаций:
    0
    Регистрация:
    25 янв 2007
    Сообщения:
    71
    Рекомендую поставить на ту машинку дебагер и посмотреть че да как выдает твоя прога.
     
  3. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Код (Text):
    1. fist ltemp
    1) может все таки fistp - стек fpu за собой "подметать" надо :)
    2) Раз есть fistp, то frndint не нужен
     
  4. sinth

    sinth New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2008
    Сообщения:
    12
    :/ Такое мне даже и в голову не приходило...

    Все гениальное просто! Пробовал - работает! ;) Век живи - век учись!

    Пасибки!

    ЗЫЖ правильный ответ - вторая часть вопроса! :lol: