WIP: symbols
authorLukas Krickl <lukas@krickl.dev>
Tue, 28 Nov 2023 16:38:41 +0000 (17:38 +0100)
committerLukas Krickl <lukas@krickl.dev>
Tue, 28 Nov 2023 16:38:41 +0000 (17:38 +0100)
include/ulas.h
src/ulas.c

index dcf793f6f2809e7babcac17773cb072f6e510f34..806fde6b031bb14cad779882feba6289461272f5 100644 (file)
@@ -152,7 +152,7 @@ struct ulas_exprbuf {
  * Symbols
  */
 
-enum ulas_syms { ULAS_SYM_FORWARD, ULAS_SYM_DECL };
+enum ulas_syms { ULAS_SYM_LABEL, ULAS_SYM_DEF };
 
 struct ulas_sym {
   char *name;
index 993a00a16cdb316768df6f6dfd2db5d1def41e92..977e7584c541df64c3d34a8ef5cf38475c84ff61 100644 (file)
@@ -41,9 +41,7 @@ void ulas_init(struct ulas_config cfg) {
   ulas.syms = ulas_symbuf();
 }
 
-void ulas_nextpass(void) {
-  ulas.scope = 0;
-}
+void ulas_nextpass(void) { ulas.scope = 0; }
 
 void ulas_free(void) {
   ulas_strfree(&ulas.tok);
@@ -1963,6 +1961,10 @@ int ulas_asmline(FILE *dst, FILE *src, const char *line, unsigned long n) {
       ulas.address = ulas_intexpr(&line, strnlen(start, n), &rc);
       break;
     case ULAS_ASMDIR_SET:
+      // only do this in the final pass
+      if (ulas.pass == ULAS_PASS_FINAL) {
+      }
+      break;
     case ULAS_ASMDIR_BYTE:
     case ULAS_ASMDIR_STR:
     case ULAS_ASMDIR_FILL: