mmx + стандартная библиотека C

Тема в разделе "WASM.BEGINNERS", создана пользователем malginer, 8 мар 2009.

  1. malginer

    malginer New Member

    Публикаций:
    0
    Регистрация:
    30 май 2007
    Сообщения:
    4
    Здраствуй, Олл.

    Исходные данные:

    Процедура на ассемблере, активно пользующая fread/fwrite/ferror. Перед каждым вызовом fread/fwrite/ferror сохраняю контекст в стеке, после вызова - загружаю (контекст - РОНы + esi, edi).

    Вопрос:

    Нужно ли кроме перечисленных регистров сохранять еще и mmx-регистры, которые в моей процедуре активно пользуются (имеется в виду: "movd eax,mm0 / push eax - pop eax / movd mm0,eax"; я пользую только mm0; вместо mm0 организовать переменную на стеке или в .data нельзя)?

    Дополнительные данные:

    Я использую nasm + gcc / MinGW + GNU Lib C (в Linux'е) / библиотеку от MinGW (в WIndows). Приложение - кроссплатформенное, пишется практически целиком на ассемблере
     
  2. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Ну и зря, т.к. по соглашению о вызовах функции могут свободно изменять только регистры eax,edx и ecx, а остальные должны сохраняться

    MMX регистры проецируются на регистры (стек) FPU, а по правилам "хорошего тона" стек FPU при входе в "чужие" функции должен быть девственно чист ;)
     
  3. malginer

    malginer New Member

    Публикаций:
    0
    Регистрация:
    30 май 2007
    Сообщения:
    4
    leo, спасибо.

    Решил выкинуть mmx к чертям из программы :)