LINUX.ORG.RU

Ответ на: комментарий от fernandos

Ну, насчёт никак ты погорячился, именно этим занимается Эльбрус во время выполнения x86-кода, к тому же на лету. Но его успехи на этом поприще намекают, что действительно, сделать это эффективно довольно сложно.

gremlin_the_red ★★★★ ()

есть проекты, например McSema, которые преобразуют бинарник в биткод LLVM, который можно даже попробовать собрать надеясь на оптимизатор компилятора.

Писали, что теперь не проблема конвертировать 32-битный бинарь в 64 бита или вообще перенести на arm. Но видимо не все так просто, т.к. прошло лет шесть-семь, а массовой конвертации бинарников пока не видно.

anonymous ()

самый эффективный способ ускорить программу - переписать её. то, что ты придумал - это даже не полумера, а 0%-10%мера вероятно

anonymous ()

Вообще такое существует в том или ином виде, см. https://en.wikipedia.org/wiki/Object_code_optimizer, https://en.wikipedia.org/wiki/Binary_recompiler, https://en.wikipedia.org/wiki/Binary_translation

Но вряд ли ты найдешь готовое решение, которое тебе i686 в x86-64 +avx,+sse,+etc перепишет. Там столько подводных камней, что даже лень перечислять.

SZT ★★★★★ ()
Последнее исправление: SZT (всего исправлений: 1)

Даже если существует такая команда, то результат вряд ли будет впечатляющим, потому что с автоматической векторизацией все очень тухло. Векторизуются только очень простые циклы, даже если использовать ffast-math. Вне циклов вряд ли что-то будет векторизоваться.

anonymous ()