仅发出长跳转指令而不是LLVM的短跳转指令

时间:2015-03-13 21:07:21

标签: assembly compiler-construction llvm compiler-optimization instrumentation

是否有任何简单的方法可以使LLVM不发出 1-bytes-displacement 的短跳转指令,如 75 30 JNE +30eb 1a JMP +1a等; 相反,只发出带有3字节零填充的 4字节位移跳转指令 0f 85 30 00 00 00 JNE +30e9 1a 00 00 00 JMPQ +1a等, 在x86_64架构下?

显然,这会增加代码大小。

1 个答案:

答案 0 :(得分:4)

X86AsmBackend.cpp中有一个函数fixupNeedsRelaxation。如果你总是在这里回归,那么它总是应该放松改为完全排量。