Я пишу надстройку DLL для приложения, внутри которого большие части написаны на ассемблере. Я смешиваю управляемый C ++, неуправляемый C ++ и встроенную сборку.
Я только что потратил несколько часов на отладку проблемы, которая оказывается, что ebx
не сохраняется во время вызова в основное приложение. Ошибка возникает, только если код запускается в режиме выпуска и вне отладчика. Код выпуска в отладчике не имеет этой проблемы.
Я отключил все оптимизации, которые я могу найти для сборки выпуска, но она все еще зависит от ebx
. Я добавил push/pop ebx
в качестве обходного пути, но эта ошибка обязательно появится снова. : - (
Можно ли сказать компилятору, что ebx
может быть изменено во время вызова функции?