Здраствуй, Олл. Исходные данные: Процедура на ассемблере, активно пользующая 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). Приложение - кроссплатформенное, пишется практически целиком на ассемблере
Ну и зря, т.к. по соглашению о вызовах функции могут свободно изменять только регистры eax,edx и ecx, а остальные должны сохраняться MMX регистры проецируются на регистры (стек) FPU, а по правилам "хорошего тона" стек FPU при входе в "чужие" функции должен быть девственно чист