aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/base.h8
-rw-r--r--src/inst.c24
2 files changed, 31 insertions, 1 deletions
diff --git a/src/base.h b/src/base.h
index 75ae6af..a135061 100644
--- a/src/base.h
+++ b/src/base.h
@@ -55,6 +55,12 @@ typedef enum
#define HWORD_SIZE sizeof(hword)
#define WORD_SIZE sizeof(word)
-#define FLOAT_SIZE sizeof(f64)
+
+// Assume array contains 4 bytes.
+hword convert_bytes_to_hword(byte *);
+void convert_hword_to_bytes(hword, byte *);
+// Assume array contains 8 bytes.
+word convert_bytes_to_word(byte *);
+void convert_word_to_bytes(word, byte *);
#endif
diff --git a/src/inst.c b/src/inst.c
index 74dd736..36156d4 100644
--- a/src/inst.c
+++ b/src/inst.c
@@ -129,6 +129,30 @@ void data_print(data_t datum, data_type_t type, FILE *fp)
}
}
+hword convert_bytes_to_hword(byte *bytes)
+{
+ hword h = 0;
+ memcpy(&h, bytes, HWORD_SIZE);
+ return h;
+}
+
+void convert_hword_to_bytes(hword w, byte *bytes)
+{
+ memcpy(bytes, &w, HWORD_SIZE);
+}
+
+void convert_word_to_bytes(word w, byte *bytes)
+{
+ memcpy(bytes, &w, WORD_SIZE);
+}
+
+word convert_bytes_to_word(byte *bytes)
+{
+ word w = 0;
+ memcpy(&w, bytes, WORD_SIZE);
+ return w;
+}
+
data_type_t get_opcode_data_type(opcode_t opcode)
{
data_type_t type = DATA_TYPE_NIL;