| 41 | |
| 42 | |
| 43 | ExprId GetCondition(LowLevelILFunction& il, Condition cond) |
| 44 | { |
| 45 | switch(cond) |
| 46 | { |
| 47 | case COND_EQ: return il.FlagCondition(LLFC_E); |
| 48 | case COND_NE: return il.FlagCondition(LLFC_NE); |
| 49 | case COND_CS: return il.FlagCondition(LLFC_UGE); |
| 50 | case COND_CC: return il.FlagCondition(LLFC_ULT); |
| 51 | case COND_MI: return il.FlagCondition(LLFC_NEG); |
| 52 | case COND_PL: return il.FlagCondition(LLFC_POS); |
| 53 | case COND_VS: return il.FlagCondition(LLFC_O); |
| 54 | case COND_VC: return il.FlagCondition(LLFC_NO); |
| 55 | case COND_HI: return il.FlagCondition(LLFC_UGT); |
| 56 | case COND_LS: return il.FlagCondition(LLFC_ULE); |
| 57 | case COND_GE: return il.FlagCondition(LLFC_SGE); |
| 58 | case COND_LT: return il.FlagCondition(LLFC_SLT); |
| 59 | case COND_GT: return il.FlagCondition(LLFC_SGT); |
| 60 | case COND_LE: return il.FlagCondition(LLFC_SLE); |
| 61 | case COND_NONE: |
| 62 | case COND_NONE2: |
| 63 | return il.Const(0, 1); //Always branch |
| 64 | default: |
| 65 | return il.Const(0, 0); //Never branch |
| 66 | } |
| 67 | } |
| 68 | |
| 69 | static void ConditionalJump(Architecture* arch, LowLevelILFunction& il, Condition cond, size_t addrSize, uint64_t t, uint64_t f) |
| 70 | { |
no test coverage detected