summaryrefslogtreecommitdiff
path: root/register.h
diff options
context:
space:
mode:
authorCarson Fleming <cflems@cflems.net>2026-07-31 23:52:09 -0400
committerCarson Fleming <cflems@cflems.net>2026-07-31 23:52:09 -0400
commitb1ff7e8bf24b40cf64127a6194d45661db3a4baf (patch)
tree98aa2c040222c5ca092d6573cb24257ac12b0a2c /register.h
parent5adb568da4dfda6d5d9699ee4b92fe44b43fc4cf (diff)
downloadccc-b1ff7e8bf24b40cf64127a6194d45661db3a4baf.tar.gz
code gen can use registers besides RAX now
Diffstat (limited to 'register.h')
-rw-r--r--register.h40
1 files changed, 27 insertions, 13 deletions
diff --git a/register.h b/register.h
index 943e839..8a8ae3c 100644
--- a/register.h
+++ b/register.h
@@ -2,21 +2,35 @@
#define REGISTER_H
struct reg {
- const char* qword;
- const char* dword;
- const char* word;
- const char* byte;
+ const char* const qword;
+ const char* const dword;
+ const char* const word;
+ const char* const byte;
+ bool is_occupied;
};
-extern const struct reg RAX;
-extern const struct reg RDI;
-extern const struct reg RSI;
-extern const struct reg RDX;
-extern const struct reg R10;
-extern const struct reg R9;
-extern const struct reg R8;
+/* TODO: maybe don't need these in the header file */
+extern struct reg RAX;
+extern struct reg RBX;
+extern struct reg RCX;
+extern struct reg RDX;
-extern const struct reg* const CALLING_CONV[];
-extern const unsigned char CC_N_REGS;
+extern struct reg RDI;
+extern struct reg RSI;
+extern struct reg RSP;
+extern struct reg RBP;
+
+extern struct reg R8;
+extern struct reg R9;
+extern struct reg R10;
+extern struct reg R11;
+extern struct reg R12;
+extern struct reg R13;
+extern struct reg R14;
+extern struct reg R15;
+/* END TODO */
+
+extern struct reg* const CALLING_CONV[];
+extern struct reg* const DATA_REGS[];
#endif