Проблема совместимости FPU с приложением, скомпилированным Delphi 7, выполняемым в Windows 11 ARM64.

Я тестирую совместимость 32-разрядного приложения x86, скомпилированного с помощью Delphi 7 и работающего в Windows 11 ARM64.

Функции RTL и обе возвращают неверные значения при использовании сInt64.

Например :IntToHex($FF00FF55AA55AA)возвращает '00FF00FF55AA55A8' иIntToHex($123456789ABCDEF)возвращает '0123456789ABCDE0'.

Ошибочная реализация, похоже, находится в функции, вызываемойIntToHex()иIntToStr(), реализация которого зависит от FPU.

Для более коротких целых чисел (<= 32 бита) функции вызываютSysUtils.CvtInt, который работает корректно и не зависит от FPU.

Обратная операцияStrToInt()тоже работает корректно и не использует FPU.

Итак, я думаю, что проблема связана либо с глючной эмуляцией FPU на ARM64, либо с неправильным использованием FPU в функциях RTL, которые работали на существующих процессорах.

сейчас пытаюсь заменитьCvtInt64реализацию с альтернативной, не использующей FPU.

Кто-нибудь знает о такой реализации и как использовать ее для замены оригинала?SysUtils.CvtInt64?

Есть ли способ сообщить о проблеме, связанной с эмуляцией FPU в Windows 11 ARM64, в Microsoft?

0 ответов

Другие вопросы по тегам