I noticed QEMU has ARM7 support, so if you get stuck, that might be something to look at. Their approach is using GCC to pre-generate code sequences for different opcodes that are then stuck together by the dynamic recompiler and slightly tweaked to link them together, or at least that's my understanding. I think it mentioned doing some kind of condition code analysis to avoid calculating them when not needed (not sure if this applies to ARM).