vk.com

Выберите язык

FEX 2410 Выпущен с новыми JIT-оптимизациями

  В этом месяце были внесены значительные изменения в ARM64EC, чтобы исправить ошибки, связанные с сохранением и восстановлением состояния при запуске под Wine. Эти изменения позволяют динамически определять номера системных вызовов Windows в WINE, а не жестко их кодировать.

  Также были внесены коррективы в работу средства проверки вызовов, что устранило проблемы, возникавшие, когда приложения перехватывали вызовы функций на ранней стадии с использованием Win32 API.

  Подробные инструкции по сборке и установке можно найти в wiki.

  Кроме того, в этом месяце проведена оптимизация JIT, что значительно ускорило генерацию кода. В некоторых микротестах это привело к сокращению времени обработки кода на 9%. Это важное достижение, которое помогает уменьшить задержки при обнаружении нового кода внутри приложений.

  Исправлено множество ошибок в эмуляции JIT, включая проблему с инструкцией x87 FPREM. Эта инструкция интересна тем, что x87 предлагает другой вариант под названием FPREM1, который FEX успешно эмулировал.

  Обнаружены и исправлены ошибки в реализации, что позволило решить серьезную проблему, из-за которой вход в Steam был крайне ненадёжным, и приходилось пробовать около дюжины раз, прежде чем он срабатывал. Это также коснулось исправления Touhou Luna Nights, где 2D-плитки отображались неправильно до изменения.

 Также исправлена ошибка, из-за которой Halls of Torment копировал данные из потока в локальный объект с использованием векторных инструкций, а FEX ошибочно обращался к векторам памяти объектов TLS. Это исправление решает проблему не только с этой игрой, но и, вероятно, со многими другими, в которых используется встроенное ускорение memcpy с использованием векторных операций!

Кроме того, исправлена ошибка в инструкции SSE MAXSS, из-за которой перед лицом NaNs возвращался неверный результат. Это повлияло только на некоторые аспекты поведения, но приятно видеть небольшие исправления ошибок, подобные этому.

С примечаниями к выпуску 2410 или подробным журналом изменений на Github можно ознакомиться по ссылке.