Granary / granary2

Dynamic binary translation framework for instrumenting x86-64 user space Linux programs
MIT License
39 stars 5 forks source link

Simplify 6_track_ssa_vars #93

Closed pgoodman closed 9 years ago

pgoodman commented 9 years ago

Given the work being done on Issue #86, I have realized that storing 3 maps/sets per SSAFragment is unnecessary. The key to the realization is that I end up merging register webs late in the game, so why not just merge them up-front? For example, we could turn all the maps of VirtualRegister -> SSARegisterWeb * into sets of SSARegisterWeb * by simply maintining a temporary map that tells us the correct web. But then this raises a more fundamental question: why do we need register webs at all? I think I need to put some thought into this, as there are some nice opportunities for simplification that could affect steps 6, 7, and 8 of assembly.

pgoodman commented 9 years ago

Another further / nice simplification would be ignore native registers from tracking! I'm starting to move in the direction away from copy propagation, mostly because it's not clear that it provides a tangible benefit for memory instrumentation, and because I think that if I do it, I should do it as a peephole optimization, and therefore something not needing any ideas of what webs are.