У меня AMD без AVX2, читал что можно игры запустить через эмулятор. Хотя инфы про AMD не было, а софт Intel скорее недружественный, может дело в этом? sde.exe -hsw -- "C:\Program Files\Cubase\Cubase.exe" Вроде бы приложение под эмулятором открывается, потому-что тормозит заметно, но плагин который написан с AVX2 инструкциями игнорируется. Может чего-то в строке эмулятора можно набрать? Типа -mix или ещё чего))
Такое себе решение. Эмуляция это программная замена аппаратной части с соответствующей производительностью. Да игры запустятся, но будет слайд-шоу. Хакеры из 3DM пошли другим путём - "вырезают" из exe-файла AVX2, FMA и F16C Есть ещё российские программисты (но скорее школота уровня hello world), называют себя Code Mendix Software (есть свой дискорд - кроме как сбора средств и пожертвований ничего другого в нём нет). Для вида отвязали F16C в игре Ghost of Tsushima (кривенько, но всё же). На хайпе выкатили свой дискорд для God of War: Ragnarok но 3DM уже давно всё сделали, а их тема так и зависла.
Как раз то что на ум приходит, я даже думал засмеют! Взять и заменить вредоносный код на что нибудь)) nop nop nop Не так наверное результат будет непредсказуем, но если кто-то занимается этим круто! Я на самом деле хочу просто посмотреть, понятно что тормозить будет, просто любопытно хотя бы запустить) --- Сообщение объединено, 17 ноя 2024 в 19:36 --- Новый комп? Не, дорого! У меня старый мощный комп, сменить на новый бюджетный) Конечно, будет быстрее, но зато сколько бабла! Не рентабельно.
Тормозить по идеи не должно, если транслируется(sde основан на пине) пином(intel pin) происходит однократная пересборка кода(jit).
SDE выдаст около 20-30% от возможностей аппаратной составляющей. Если переводить в кадры: 15-25 fps против 50-60 fps на аналогичном процессоре, но с поддерживаемыми инструкциями (например i7-3770k без AVX2 и i7-4770k с AVX2). Возможно в ПО (не в играх) производительность другая, не проверял. Нет, не так. Утрировано, там заменяют код на 128 битные инструкции. Просто в этом сложность (точнее кропотливость) как раз и заключается - найти всё и поменять. Можно для понимания сравнить в отладчике оригинал exe-файла с модом от 3DM. Я как-то раз экспериментировал с AVX2, которые компилирует Pelles C. Сначала думал, что даже программа не запустится, но на моё удивление часть функционала работала в штатном режиме. Но когда исполнение кода доходило до определенной функции, которая использует AVX2, то программа крашилась. Вот такие функции и ищут для замены.
k3rnl При запуске тормозит обычно из за первичного кэширования, пока собирается код и выделяется трансляторный кэш. Заметная просадка профайла может быть при высокой частоте эмуляции инструкций, в играх может.. В принципе такое можно автоматикой сделать: набор не из isa приведёт к срабатыванию ловушки(#ud), инструкцию заменить на ветвление к её эмулятору(binary rewriting и всё такое)? Для avx минимальная форматная длина инструкции вроде 3б?
https://cloud.mail.ru/public/voY3/p9bQ5R7bZ я когда увидел vpmovsxbd ymm0, xmm0 ммне страшно стало, сразу закрыл x64dbg
vbroadcastss zmm19, dword ptr [rsi] vfmadd231ps zmm20 {k8}{z}, zmm21, zmm19 vpermilps zmm22, zmm23, 0x1B vaddps zmm24 {k9}, zmm22, zmm25 Complex Sequence with Masking and Broadcasting
Я так понял эмулятор перехватывает прерывания? Недоконца понимаю как это работает. Ещё можно просто заменить инструкции AVX аналогичным кодом SSE2,3,4. Например, по примету XRayExtensions, добавляем одну или 2(конст), 3(данные) секции и там делаем необходимые функции на замену. В теории можно написать скрипт на питухоне для IDAPro который выполнит поиск этих инструкций и заменит на вызов функций аналогов SSE. Конечно производительность упадёт в любом случае, но насколько интенсивно будут использовать эти инструкции.
Intro Декодирует инструкции дизассемблером, собирает их в буфер(кэш) с необходимой оберткой и там исполняет. Если встречает инструкции которые необходимо эмулировать, то эмулирует их. Короче говоря трассирует приложение.
А много коду? Можно пример что чем заменить автоматом или там думать надо? Я бы хексэдитором заменил) --- Сообщение объединено, 19 ноя 2024 в 03:22 --- x64dbg only supports integer in expressions. Strings, Floating point numbers and SSE/AVX data is not supported.