diff options
| author | Rose Hogenson <rosehogenson@posteo.net> | 2024-06-02 09:17:55 -0700 |
|---|---|---|
| committer | Rose Hogenson <rosehogenson@posteo.net> | 2024-06-02 09:17:55 -0700 |
| commit | 22b8b7e2478e3b205c89cc7a700058bfe39175f2 (patch) | |
| tree | ad6cf17b8729ab9af71d4d731162e738f3a7b057 /linker.sml | |
| parent | 90c4eac546d2c950b27a84ef0e390ac33a1a347d (diff) | |
| download | sml-22b8b7e2478e3b205c89cc7a700058bfe39175f2.tar.zst | |
Add strings and IO.
Diffstat (limited to 'linker.sml')
| -rw-r--r-- | linker.sml | 17 |
1 files changed, 16 insertions, 1 deletions
@@ -47,7 +47,6 @@ struct fun writeValue w (Syntax.VVar v) = writeVar w v | writeValue w (Syntax.VLabel l) = writeInt w (getOpt (IntMap.lookup l m, 0)) | writeValue w (Syntax.VInt i) = writeInt w i - | writeValue w (Syntax.VString _) = raise Fail "I don't support strings yet" in case oper of Syntax.OAlloc (r, v) => @@ -108,6 +107,22 @@ struct writeValue w condition ; writeValue w (Syntax.VLabel label)) | Syntax.OLabel _ => () + | Syntax.ORead (r, ptr, off, len) => + (makeOpcode w 14 (isConst off) (isConst len) ; + writeVar w r ; + writeVar w ptr ; + writeValue w off ; + writeValue w len) + | Syntax.OWrite (ptr, off, len) => + (makeOpcode w 15 (isConst off) (isConst len) ; + writeVar w ptr ; + writeValue w off ; + writeValue w len) + | Syntax.OWriteErr (ptr, off, len) => + (makeOpcode w 16 (isConst off) (isConst len) ; + writeVar w ptr ; + writeValue w off ; + writeValue w len) end fun link (program : Syntax.opcode list) : Word8Vector.vector = |
