aboutsummaryrefslogtreecommitdiff
path: root/minias.h
diff options
context:
space:
mode:
authorAndrew Chambers <[email protected]>2021-10-07 01:53:34 +1300
committerAndrew Chambers <[email protected]>2021-10-07 01:53:34 +1300
commitf4a9a52d001a54ca1142110b70142a8ef8df53bc (patch)
tree95226e04b60c43b1143b7d27d7fe6905ae0b3dd4 /minias.h
parent78aa469080b95f41fabc0f428bd4e5b1bbdaa04b (diff)
Work.
Diffstat (limited to 'minias.h')
-rw-r--r--minias.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/minias.h b/minias.h
index 5e456fa..bf0b857 100644
--- a/minias.h
+++ b/minias.h
@@ -51,11 +51,49 @@ typedef enum {
ASM_AND,
ASM_LEA,
ASM_MOV,
+ ASM_MOVSX,
+ ASM_MOVZX,
ASM_OR,
ASM_SUB,
+ ASM_XCHG,
ASM_XOR,
// Registers, order matters.
ASM_REG_BEGIN,
+
+ ASM_AL,
+ ASM_CL,
+ ASM_DL,
+ ASM_BL,
+ ASM_SPL,
+ ASM_BPL,
+ ASM_SIL,
+ ASM_DIL,
+ ASM_R8B,
+ ASM_R9B,
+ ASM_R10B,
+ ASM_R11B,
+ ASM_R12B,
+ ASM_R13B,
+ ASM_R14B,
+ ASM_R15B,
+
+ ASM_AX,
+ ASM_CX,
+ ASM_DX,
+ ASM_BX,
+ ASM_SP,
+ ASM_BP,
+ ASM_SI,
+ ASM_DI,
+ ASM_R8W,
+ ASM_R9W,
+ ASM_R10W,
+ ASM_R11W,
+ ASM_R12W,
+ ASM_R13W,
+ ASM_R14W,
+ ASM_R15W,
+
ASM_EAX,
ASM_ECX,
ASM_EDX,
@@ -64,6 +102,15 @@ typedef enum {
ASM_EBP,
ASM_ESI,
ASM_EDI,
+ ASM_R8D,
+ ASM_R9D,
+ ASM_R10D,
+ ASM_R11D,
+ ASM_R12D,
+ ASM_R13D,
+ ASM_R14D,
+ ASM_R15D,
+
ASM_RAX,
ASM_RCX,
ASM_RDX,
@@ -80,6 +127,7 @@ typedef enum {
ASM_R13,
ASM_R14,
ASM_R15,
+
ASM_REG_END,
} AsmKind;
@@ -144,6 +192,7 @@ typedef ModRMBinop Add;
typedef ModRMBinop And;
typedef ModRMBinop Lea;
typedef ModRMBinop Mov;
+typedef ModRMBinop Movzx;
typedef ModRMBinop Or;
typedef ModRMBinop Sub;
typedef ModRMBinop Xor;
@@ -159,6 +208,7 @@ union Parsev {
And and;
Lea lea;
Mov mov;
+ Movzx movzx;
Or or;
Xor xor;
Sub sub;
@@ -176,9 +226,13 @@ struct AsmLine {
AsmLine *next;
};
+extern size_t curlineno;
+
/* util.c */
+void lfatal(const char *fmt, ...);
void fatal(const char *fmt, ...);
+void unreachable(void);
void *xmalloc(size_t);
void *xrealloc(void *, size_t);