diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2018-05-28 17:37:46 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2018-05-28 17:37:46 (GMT) |
commit | 9f5ed46de568d3db882c939c8ca9d0117bff3369 (patch) | |
tree | 9d2090cd640e54379dc1b982e03dc284b2d23ae7 /plugins/arm/v7/helpers.h | |
parent | 2fd186a84cba4f39f6f1bb8bd34d52b4e1d4f814 (diff) |
Relied on register objects as often as possible.
Diffstat (limited to 'plugins/arm/v7/helpers.h')
-rw-r--r-- | plugins/arm/v7/helpers.h | 70 |
1 files changed, 48 insertions, 22 deletions
diff --git a/plugins/arm/v7/helpers.h b/plugins/arm/v7/helpers.h index 3f8d97c..d41f6e8 100644 --- a/plugins/arm/v7/helpers.h +++ b/plugins/arm/v7/helpers.h @@ -26,11 +26,10 @@ #include <arch/immediate.h> +#include <arch/operands/register.h> #include "pseudo.h" -#include "register.h" -#include "operands/coproc.h" #include "operands/estate.h" #include "operands/it.h" #include "operands/maccess.h" @@ -38,7 +37,9 @@ #include "operands/reglist.h" #include "operands/rotation.h" #include "operands/shift.h" -#include "operands/specreg.h" +#include "registers/basic.h" +#include "registers/coproc.h" +#include "registers/special.h" @@ -96,7 +97,12 @@ #define CoProcessor(idx) \ ({ \ GArchOperand *__result; \ - __result = g_armv7_coproc_operand_new(idx); \ + GArchRegister *__reg; \ + __reg = g_armv7_cp_register_new(idx); \ + if (__reg == NULL) \ + __result = NULL; \ + else \ + __result = g_armv7_register_operand_new(G_ARMV7_REGISTER(__reg)); \ __result; \ }) @@ -216,12 +222,12 @@ #define NextRegister(idx) \ ({ \ GArchOperand *__result; \ - GArmV7Register *__reg; \ - __reg = g_armv7_register_new(idx + 1); \ + GArchRegister *__reg; \ + __reg = g_armv7_basic_register_new(idx + 1); \ if (__reg == NULL) \ __result = NULL; \ else \ - __result = g_armv7_register_operand_new(__reg); \ + __result = g_armv7_register_operand_new(G_ARMV7_REGISTER(__reg)); \ __result; \ }) @@ -249,12 +255,12 @@ #define Register(idx) \ ({ \ GArchOperand *__result; \ - GArmV7Register *__reg; \ - __reg = g_armv7_register_new(idx); \ + GArchRegister *__reg; \ + __reg = g_armv7_basic_register_new(idx); \ if (__reg == NULL) \ __result = NULL; \ else \ - __result = g_armv7_register_operand_new(__reg); \ + __result = g_armv7_register_operand_new(G_ARMV7_REGISTER(__reg)); \ __result; \ }) @@ -284,7 +290,12 @@ #define SpecRegAPSR() \ ({ \ GArchOperand *__result; \ - __result = g_armv7_specreg_operand_new(SRT_APSR); \ + GArchRegister *__reg; \ + __reg = g_armv7_special_register_new(SRT_APSR); \ + if (__reg == NULL) \ + __result = NULL; \ + else \ + __result = g_armv7_register_operand_new(G_ARMV7_REGISTER(__reg)); \ __result; \ }) @@ -292,21 +303,26 @@ #define SpecRegFromMask(mask) \ ({ \ GArchOperand *__result; \ + GArchRegister *__reg; \ switch (mask) \ { \ case b10: \ - __result = g_armv7_specreg_operand_new(SRT_APSR_NZCVQ); \ + __reg = g_armv7_special_register_new(SRT_APSR_NZCVQ); \ break; \ case b1: \ - __result = g_armv7_specreg_operand_new(SRT_APSR_G); \ + __reg = g_armv7_special_register_new(SRT_APSR_G); \ break; \ case b11: \ - __result = g_armv7_specreg_operand_new(SRT_APSR_NZCVQG); \ + __reg = g_armv7_special_register_new(SRT_APSR_NZCVQG); \ break; \ default: \ - __result = NULL; \ + __reg = NULL; \ break; \ } \ + if (__reg == NULL) \ + __result = NULL; \ + else \ + __result = g_armv7_register_operand_new(G_ARMV7_REGISTER(__reg)); \ __result; \ }) @@ -314,27 +330,32 @@ #define SpecRegFromReg(reg) \ ({ \ GArchOperand *__result; \ + GArchRegister *__reg; \ switch (reg) \ { \ case b0: \ - __result = g_armv7_specreg_operand_new(SRT_FPSID); \ + __reg = g_armv7_special_register_new(SRT_FPSID); \ break; \ case b1: \ - __result = g_armv7_specreg_operand_new(SRT_FPSCR); \ + __reg = g_armv7_special_register_new(SRT_FPSCR); \ break; \ case b110: \ - __result = g_armv7_specreg_operand_new(SRT_MVFR1); \ + __reg = g_armv7_special_register_new(SRT_MVFR1); \ break; \ case b111: \ - __result = g_armv7_specreg_operand_new(SRT_MVFR0); \ + __reg = g_armv7_special_register_new(SRT_MVFR0); \ break; \ case b1000: \ - __result = g_armv7_specreg_operand_new(SRT_FPEXC); \ + __reg = g_armv7_special_register_new(SRT_FPEXC); \ break; \ default: \ - __result = NULL; \ + __reg = NULL; \ break; \ } \ + if (__reg == NULL) \ + __result = NULL; \ + else \ + __result = g_armv7_register_operand_new(G_ARMV7_REGISTER(__reg)); \ __result; \ }) @@ -342,7 +363,12 @@ #define SpecRegCSPSR(r) \ ({ \ GArchOperand *__result; \ - __result = g_armv7_specreg_operand_new(r == 1 ? SRT_SPSR : SRT_CPSR); \ + GArchRegister *__reg; \ + __reg = g_armv7_special_register_new(r == 1 ? SRT_SPSR : SRT_CPSR); \ + if (__reg == NULL) \ + __result = NULL; \ + else \ + __result = g_armv7_register_operand_new(G_ARMV7_REGISTER(__reg)); \ __result; \ }) |