Reopt: recompiling compiled code to do enhanced optimizations. It works by mapping binaries into LLVM byte code, using the LLVM optimization passes to optimize the LLVM, and then combining the newly generated into the binary to generate a new executable.https://github.com/GaloisInc/reopt
-
-
If it's that good at mapping binaries into LLVM bytecode, ought to be able to recompile to a new target too. Like my old x86 -> M68K transpiler, but more flexible.
3 replies 0 retweets 5 likes -
Only if they have fully matching ABIs, including type sizes/representations (including endianness) and, if static linked or making inline syscalls, user-kernel ABI.
1 reply 0 retweets 1 like -
Linux ABI is pretty easily mapped between architectures. Size/endianness being same is helpful. X86_64 <-> ARM64 ought to be straightforward. 8086 MSDOS -> 68000 GEMDOS was probably harder.
1 reply 0 retweets 0 likes -
Size/endianness matching is absolutely necessary not just helpful. Kernel ABI mismatch issues are harder to patch up than you might expect, especially in relation to signal issues. This is why qemu-user is so flaky.
1 reply 0 retweets 0 likes -
Since I wrote a functional 8086 -> 68000 binary recompiler back in 1988, I will simply have to say No, you're wrong on size/endianness.
1 reply 0 retweets 0 likes
You could probably *emulate* the original endianness by flipping low bits of sub-word accesses, but making it all consistent gets complicated, especially at external interface boundaries.
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.