| 382 | |
| 383 | |
| 384 | ExprId GetCondition(LowLevelILFunction& il, uint32_t cond) |
| 385 | { |
| 386 | switch (cond) |
| 387 | { |
| 388 | case armv7::COND_EQ: return il.FlagCondition(LLFC_E); |
| 389 | case armv7::COND_NE: return il.FlagCondition(LLFC_NE); |
| 390 | case armv7::COND_CS: return il.FlagCondition(LLFC_UGE); |
| 391 | case armv7::COND_CC: return il.FlagCondition(LLFC_ULT); |
| 392 | case armv7::COND_MI: return il.FlagCondition(LLFC_NEG); |
| 393 | case armv7::COND_PL: return il.FlagCondition(LLFC_POS); |
| 394 | case armv7::COND_VS: return il.FlagCondition(LLFC_O); |
| 395 | case armv7::COND_VC: return il.FlagCondition(LLFC_NO); |
| 396 | case armv7::COND_HI: return il.FlagCondition(LLFC_UGT); |
| 397 | case armv7::COND_LS: return il.FlagCondition(LLFC_ULE); |
| 398 | case armv7::COND_GE: return il.FlagCondition(LLFC_SGE); |
| 399 | case armv7::COND_LT: return il.FlagCondition(LLFC_SLT); |
| 400 | case armv7::COND_GT: return il.FlagCondition(LLFC_SGT); |
| 401 | case armv7::COND_LE: return il.FlagCondition(LLFC_SLE); |
| 402 | case armv7::COND_NONE: return il.Const(0, 1); //Always branch |
| 403 | default: |
| 404 | return il.Const(0, 0); //Never branch |
| 405 | } |
| 406 | } |
| 407 | |
| 408 | |
| 409 | static void ConditionalJump(Architecture* arch, LowLevelILFunction& il, uint32_t cond, uint32_t t, uint32_t f) |
no test coverage detected