ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
5 мая
1283464 Топик полностью
AlexBi (12.02.2023 09:33, просмотров: 165) ответил LightElf на Возможно где-то из обработчика прерывания вызывается нереентерабельная функция. Смутно похожая шняга была недавно. Обработчик не сохраняет регистры, так как он в своей банке работает. А вызываемая функа обращается (по прямым адресам) к регистрам основного банка, считая что регистры сохранены. Ну и эпизодически чего-то херила в чужих регистрах.
+1 на счет вопроса реентерабельности. Там вся работа с DWORD получается через какие-то функции компилятора, возможно выбрана не реентерабельная версия при сборке, если там это вообще выбирается. 

Возможно надо посмотреть что внутри C?LSTXDATA и C?ULCMP

А еще лучше сделать temp без volatile , тем более что он не нужен, и посмотреть что в асме получится, возможно вызовы библиотечных функций пропадут.