Intel® Software Development Emulator (Intel® SDE)

Тема в разделе "WASM.BEGINNERS", создана пользователем Semiono, 17 ноя 2024 в 07:43.

  1. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    778
    У меня AMD без AVX2, читал что можно игры запустить через эмулятор.
    Хотя инфы про AMD не было, а софт Intel скорее недружественный, может дело в этом?
    sde.exe -hsw -- "C:\Program Files\Cubase\Cubase.exe"
    Вроде бы приложение под эмулятором открывается, потому-что тормозит заметно,
    но плагин который написан с AVX2 инструкциями игнорируется.
    Может чего-то в строке эмулятора можно набрать? Типа -mix или ещё чего))
     
  2. Research

    Research Active Member

    Публикаций:
    1
    Регистрация:
    6 янв 2024
    Сообщения:
    134
    Купить новое железо ?
     
    Semiono нравится это.
  3. k3rnl

    k3rnl Member

    Публикаций:
    0
    Регистрация:
    28 янв 2021
    Сообщения:
    55
    Такое себе решение. Эмуляция это программная замена аппаратной части с соответствующей производительностью.
    Да игры запустятся, но будет слайд-шоу.

    Хакеры из 3DM пошли другим путём - "вырезают" из exe-файла AVX2, FMA и F16C

    Есть ещё российские программисты (но скорее школота уровня hello world), называют себя Code Mendix Software (есть свой дискорд - кроме как сбора средств и пожертвований ничего другого в нём нет).
    Для вида отвязали F16C в игре Ghost of Tsushima (кривенько, но всё же). На хайпе выкатили свой дискорд для God of War: Ragnarok но 3DM уже давно всё сделали, а их тема так и зависла.
     
    Последнее редактирование: 17 ноя 2024 в 10:45
    Semiono нравится это.
  4. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    778
    Как раз то что на ум приходит, я даже думал засмеют! Взять и заменить вредоносный код на что нибудь)) nop nop nop
    Не так наверное результат будет непредсказуем, но если кто-то занимается этим круто!
    Я на самом деле хочу просто посмотреть, понятно что тормозить будет, просто любопытно хотя бы запустить)
    --- Сообщение объединено, 17 ноя 2024 в 19:36 ---
    Новый комп? Не, дорого! У меня старый мощный комп, сменить на новый бюджетный)
    Конечно, будет быстрее, но зато сколько бабла! Не рентабельно.
     
  5. Ahimov

    Ahimov New Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    14
    Тормозить по идеи не должно, если транслируется(sde основан на пине) пином(intel pin) происходит однократная пересборка кода(jit).
     
    Semiono нравится это.
  6. k3rnl

    k3rnl Member

    Публикаций:
    0
    Регистрация:
    28 янв 2021
    Сообщения:
    55
    SDE выдаст около 20-30% от возможностей аппаратной составляющей.
    Если переводить в кадры: 15-25 fps против 50-60 fps на аналогичном процессоре, но с поддерживаемыми инструкциями (например i7-3770k без AVX2 и i7-4770k с AVX2).
    Возможно в ПО (не в играх) производительность другая, не проверял.

    Нет, не так. Утрировано, там заменяют код на 128 битные инструкции.
    Просто в этом сложность (точнее кропотливость) как раз и заключается - найти всё и поменять.
    Можно для понимания сравнить в отладчике оригинал exe-файла с модом от 3DM.

    Я как-то раз экспериментировал с AVX2, которые компилирует Pelles C.
    Сначала думал, что даже программа не запустится, но на моё удивление часть функционала работала в штатном режиме.
    Но когда исполнение кода доходило до определенной функции, которая использует AVX2, то программа крашилась.
    Вот такие функции и ищут для замены.
     
    Последнее редактирование: 17 ноя 2024 в 21:43
  7. Ahimov

    Ahimov New Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    14
    k3rnl

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

    В принципе такое можно автоматикой сделать: набор не из isa приведёт к срабатыванию ловушки(#ud), инструкцию заменить на ветвление к её эмулятору(binary rewriting и всё такое)?
    Для avx минимальная форматная длина инструкции вроде 3б?
     
    Semiono нравится это.
  8. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    778
    Ahimov нравится это.
  9. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    450
    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
    :)
     
    Semiono нравится это.
  10. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    601
    Я так понял эмулятор перехватывает прерывания? Недоконца понимаю как это работает.
    Ещё можно просто заменить инструкции AVX аналогичным кодом SSE2,3,4. Например, по примету XRayExtensions, добавляем одну или 2(конст), 3(данные) секции и там делаем необходимые функции на замену. В теории можно написать скрипт на питухоне для IDAPro который выполнит поиск этих инструкций и заменит на вызов функций аналогов SSE. Конечно производительность упадёт в любом случае, но насколько интенсивно будут использовать эти инструкции.
     
    Semiono нравится это.
  11. Ahimov

    Ahimov New Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    14
    Intro

    Декодирует инструкции дизассемблером, собирает их в буфер(кэш) с необходимой оберткой и там исполняет. Если встречает инструкции которые необходимо эмулировать, то эмулирует их. Короче говоря трассирует приложение.
     
    Semiono нравится это.
  12. Semiono

    Semiono Member

    Публикаций:
    0
    Регистрация:
    27 ноя 2005
    Сообщения:
    778
    А много коду? Можно пример что чем заменить автоматом или там думать надо? Я бы хексэдитором заменил)
    --- Сообщение объединено, 19 ноя 2024 в 03:22 ---
    x64dbg only supports integer in expressions. Strings, Floating point numbers and SSE/AVX data is not supported.