summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2020-05-04 06:34:38 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2020-05-04 06:34:38 (GMT)
commit6c9e1b5f7ee0915036d47b83f1e34b87b44b1723 (patch)
treeda1b5039502755dd750ff9114083a73e55f5d9ce
parent78da8b1ad594ca24292eb0f047698bc952b7b961 (diff)
Recognized reserved instructions as special cases.
-rw-r--r--plugins/pychrysalide/arch/instructions/constants.c3
-rw-r--r--plugins/pychrysalide/arch/instructions/undefined.c20
-rw-r--r--src/arch/instructions/undefined.c4
-rw-r--r--src/arch/instructions/undefined.h1
4 files changed, 17 insertions, 11 deletions
diff --git a/plugins/pychrysalide/arch/instructions/constants.c b/plugins/pychrysalide/arch/instructions/constants.c
index b5e08e1..af7baa9 100644
--- a/plugins/pychrysalide/arch/instructions/constants.c
+++ b/plugins/pychrysalide/arch/instructions/constants.c
@@ -96,6 +96,7 @@ bool define_undefined_instruction_constants(PyTypeObject *type)
result = add_const_to_group(values, "NOP", IEB_NOP);
if (result) result = add_const_to_group(values, "UNDEFINED", IEB_UNDEFINED);
if (result) result = add_const_to_group(values, "UNPREDICTABLE", IEB_UNPREDICTABLE);
+ if (result) result = add_const_to_group(values, "RESERVED", IEB_RESERVED);
if (!result)
{
@@ -103,7 +104,7 @@ bool define_undefined_instruction_constants(PyTypeObject *type)
goto exit;
}
- result = attach_constants_group_to_type(type, false, "InstrExpectedBehavior", values,
+ result = attach_constants_group_to_type(type, false, "ExpectedBehavior", values,
"List of possible behaviors of undefined instructions.");
exit:
diff --git a/plugins/pychrysalide/arch/instructions/undefined.c b/plugins/pychrysalide/arch/instructions/undefined.c
index ee7dc51..66ae4b6 100644
--- a/plugins/pychrysalide/arch/instructions/undefined.c
+++ b/plugins/pychrysalide/arch/instructions/undefined.c
@@ -145,7 +145,7 @@ static int py_undef_instruction_init(PyObject *self, PyObject *args, PyObject *k
" UndefInstruction(behavior)" \
"\n" \
"Where behavior is a" \
- " pychrysalide.arch.instructions.UndefInstruction.InstrExpectedBehavior" \
+ " pychrysalide.arch.instructions.UndefInstruction.ExpectedBehavior" \
" constant describing the state of the CPU once the instruction is run."
/* Récupération des paramètres */
@@ -197,21 +197,21 @@ static PyObject *py_undef_instruction_get_behavior(PyObject *self, void *closure
GUndefInstruction *instr; /* Version native */
InstrExpectedBehavior behavior; /* Comportement attendu */
-#define UNDEF_INSTRUCTION_BEHAVIOR_ATTRIB PYTHON_GET_DEF_FULL \
-( \
- behavior, py_undef_instruction, \
- "Consequence carried by the undefined instruction.\n" \
- "\n" \
- "The result is provided as a" \
- " pychrysalide.arch.instructions.UndefInstruction.InstrExpectedBehavior" \
- " constant." \
+#define UNDEF_INSTRUCTION_BEHAVIOR_ATTRIB PYTHON_GET_DEF_FULL \
+( \
+ behavior, py_undef_instruction, \
+ "Consequence carried by the undefined instruction.\n" \
+ "\n" \
+ "The result is provided as a" \
+ " pychrysalide.arch.instructions.UndefInstruction.ExpectedBehavior" \
+ " constant." \
)
instr = G_UNDEF_INSTRUCTION(pygobject_get(self));
behavior = g_undef_instruction_get_behavior(instr);
result = cast_with_constants_group_from_type(get_python_undefined_instruction_type(),
- "InstrExpectedBehavior", behavior);
+ "ExpectedBehavior", behavior);
return result;
diff --git a/src/arch/instructions/undefined.c b/src/arch/instructions/undefined.c
index da2f73e..6d90a1c 100644
--- a/src/arch/instructions/undefined.c
+++ b/src/arch/instructions/undefined.c
@@ -258,6 +258,10 @@ const char *g_undef_instruction_get_keyword(const GUndefInstruction *instr)
result = "unpredictable";
break;
+ case IEB_RESERVED:
+ result = "reserved";
+ break;
+
default:
assert(false);
result = NULL;
diff --git a/src/arch/instructions/undefined.h b/src/arch/instructions/undefined.h
index 5aa9bec..8f35f35 100644
--- a/src/arch/instructions/undefined.h
+++ b/src/arch/instructions/undefined.h
@@ -54,6 +54,7 @@ typedef enum _InstrExpectedBehavior
IEB_NOP,
IEB_UNDEFINED,
IEB_UNPREDICTABLE,
+ IEB_RESERVED,
} InstrExpectedBehavior;