diff options
author | unknown <Pixel@.(none)> | 2009-09-16 22:24:08 -0700 |
---|---|---|
committer | unknown <Pixel@.(none)> | 2009-09-16 22:24:08 -0700 |
commit | 6a653b35990e9a642dd4af9b8ee5742d5a84956c (patch) | |
tree | 31dac2b537af43584bbc6237df824cad7dba1a00 /Database/database-types.h | |
parent | 2142bda77399a49f0a6684cccb4bb3420c2a10df (diff) |
Adding basic Database structure.
Diffstat (limited to 'Database/database-types.h')
-rw-r--r-- | Database/database-types.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/Database/database-types.h b/Database/database-types.h new file mode 100644 index 0000000..95c5ebd --- /dev/null +++ b/Database/database-types.h @@ -0,0 +1,47 @@ +#ifndef __DATABASE_TYPES_H__
+#define __DATABASE_TYPES_H__
+
+/** The basic tags that describe the bytes of the database. The tag "CODE_FIRST_BYTE" is
+ * mainly for multi-bytes instructions, in order to help the UI displaying
+ * properly the instructions.
+ */
+
+enum basic_tags_t {
+ TAG_UNKNOWN = 0,
+ TAG_CODE,
+ TAG_DATA,
+ TAG_CODE_FIRST_BYTE,
+};
+
+/** The 8-bits tag for a byte. The certitude part
+ * A non-hollow database will be as big (at least) as the input file: in-memory-RLE is probably a good idea.
+ */
+struct memory_tags_t {
+ unsigned short basic_tags: 2;
+ /** -1..30, 30 being "user hinted", 29 being "external reference" (entry point, exported symbol, ...)
+ * and -1 means something's fishy with that tag, and that it is probably completely wrong.
+ * Certitude will grow down with distance from a certain piece of info when the crawler goes away jumping around.
+ */
+ unsigned short certitude: 6;
+};
+
+/** An absolute pointer can reference a segment from its ID, and a pointer within the segment.
+ */
+
+typedef union {
+ Uint64 raw_ptr;
+ struct {
+ Uint32 segment_id;
+ Uint32 ptr;
+ };
+} absolute_ptr;
+
+/** A function description.
+ */
+
+struct function_t {
+ absolute_ptr start;
+ Uint32 size;
+};
+
+#endif
|