(no title)
dobin | 2 years ago
Does this lifter have a similar implementation, or will a "add rax, 1" be lifted to something like "register1 += 1"?
dobin | 2 years ago
Does this lifter have a similar implementation, or will a "add rax, 1" be lifted to something like "register1 += 1"?
aengelke|2 years ago
Why is this a problem? The addition is one LLVM-IR instruction (add), followed by flag computation (maybe 10-20 instrs). Dead code elimination will afterwards quickly remove unused instructions (e.g., unused flags).
> register1 += 1
I don't see how this could be beneficial, especially on x86 where you can have "mov rax, rdx; add rax, 1" and "lea rax, [rdx + 1]", which do mostly the same (the former clobbers flags). SSA removes registers and shows the semantic operations clearly.
aleclm|2 years ago
I think something ABI-, compiler- and architecture-agnostic would be super cool and I started to build a training data set.
I wouldn't diff individual instructions though, I'd go for something more highlevel, such as features of the CFG and type of operations in the nodes.
westurner|2 years ago