WIP: .def str directive
authorLukas Krickl <lukas@krickl.dev>
Tue, 5 Dec 2023 13:29:19 +0000 (14:29 +0100)
committerLukas Krickl <lukas@krickl.dev>
Tue, 5 Dec 2023 13:29:19 +0000 (14:29 +0100)
src/ulas.c
tests/t0.s

index b2464c592cd76e13eeb135d5e07c8bfb13c4e2a5..6848ae237ced4a3ced6dc926c59aa91ba594b49a 100644 (file)
@@ -2128,7 +2128,11 @@ int ulas_asmdirset(const char **line, unsigned long n, enum ulas_type t) {
     }
     break;
   case ULAS_STR:
-    // TODO: implement str expressions
+    val.strv = strdup(ulas_strexpr(line, n, &rc));
+    if (rc == -1) {
+      goto fail;
+    }
+    break;
   default:
     ULASERR("Unexpected type\n");
     return -1;
@@ -2173,7 +2177,7 @@ int ulas_asmdirdef(const char **line, unsigned long n) {
   enum ulas_type t = ULAS_INT;
   if (strncmp(ulas.tok.buf, "int", ulas.tok.maxlen) == 0) {
     t = ULAS_INT;
-  } else if (strncmp(ulas.tok.buf, "char", ulas.tok.maxlen) == 0) {
+  } else if (strncmp(ulas.tok.buf, "str", ulas.tok.maxlen) == 0) {
     t = ULAS_STR;
   } else {
     ULASERR("Type (str,int) expected. Got '%s'\n", ulas.tok.buf);
index 4ad1bab88d0cf234763d5e07e745759695928d53..0faea9494ab490721439e69b876a05fda5b3f705 100644 (file)
@@ -90,3 +90,4 @@ l2:
 .fill 1, 3
 .fill 1, 0x180-$ ; fill until 0x180
   nop
+.def str s2 = "Hello"