summary refs log tree commit diff
path: root/lisc/lisc.h
diff options
context:
space:
mode:
Diffstat (limited to 'lisc/lisc.h')
-rw-r--r--lisc/lisc.h20
1 files changed, 19 insertions, 1 deletions
diff --git a/lisc/lisc.h b/lisc/lisc.h
index d4c08ce..b3287f7 100644
--- a/lisc/lisc.h
+++ b/lisc/lisc.h
@@ -17,6 +17,7 @@ typedef struct Tmp Tmp;
 typedef struct Con Con;
 typedef struct Fn Fn;
 typedef struct Typ Typ;
+typedef struct Dat Dat;
 
 enum Reg {
 	RXX,
@@ -263,6 +264,22 @@ struct Typ {
 	} seg[NSeg+1];
 };
 
+struct Dat {
+	enum {
+		DName,
+		DAlign,
+		DA,
+		DB,
+		DH,
+		DW,
+		DL
+	} type;
+	union {
+		int64_t num;
+		char *str;
+	} u;
+};
+
 
 /* main.c */
 extern char debug['Z'+1];
@@ -288,7 +305,7 @@ Ref getcon(int64_t, Fn *);
 
 /* parse.c */
 extern OpDesc opdesc[NOp];
-Fn *parse(FILE *);
+Fn *parse(FILE *, void (Dat *));
 void printfn(Fn *, FILE *);
 
 /* ssa.c */
@@ -319,3 +336,4 @@ void rega(Fn *);
 
 /* emit.c */
 void emitfn(Fn *, FILE *);
+void emitdat(Dat *, FILE *);