1

Есть ли простой способ сделать LLVM НЕ испускают короткие инструкции прыжок с 1 байт-водоизмещением, как 75 30 JNE +30, eb 1a JMP +1a и т.д.; вместо того, чтобы издавать только 4-байтовое смещение инструкции прыжка с 3-байтовыми нулевыми отступами, как 0f 85 30 00 00 00 JNE +30, e9 1a 00 00 00 JMPQ +1a и т.д., под архитектурой x86_64?Выделяют только длинные инструкции прыжковых вместо коротких инструкций прыжка для LLVM

По-видимому, это увеличит размер кода.

+0

В целях исследования. Что значит отключить расслабление? – WindChaser

+0

Да, смещение в четыре байта больше, чем однобайтное смещение. – EJP

ответ

4

В X86AsmBackend.cpp есть функция fixupNeedsRelaxation. Если вы всегда возвращаете истину, он всегда должен расслабляться, например. Перейдите на полное перемещение.

+3

Передача '-mc-relax-all' на бэкэнд может быть менее навязчивой и кросс-целевой альтернативой –

+0

Может' RelaxInstruction() 'выборочно выбирать только команды перехода, которые нужно расслабить? – WindChaser

 Смежные вопросы

  • Нет связанных вопросов^_^