summaryrefslogtreecommitdiffstats
path: root/linker.sml
diff options
context:
space:
mode:
authorRose Hogenson <rhogenson@posteo.net>2023-02-12 15:37:25 -0800
committerRose Hogenson <rhogenson@posteo.net>2023-02-12 15:37:25 -0800
commitd940187fd8720e0ab3c00e5a6a7ae8f181c7752d (patch)
tree69df829ae1e7fb9454008920b49db08489d939a6 /linker.sml
parent5989629a7951e544ad4656672025a99ecd08c7c9 (diff)
downloadsml-d940187fd8720e0ab3c00e5a6a7ae8f181c7752d.tar.zst
Add lambda functions.
Diffstat (limited to 'linker.sml')
-rw-r--r--linker.sml10
1 files changed, 5 insertions, 5 deletions
diff --git a/linker.sml b/linker.sml
index 874e145..6694d89 100644
--- a/linker.sml
+++ b/linker.sml
@@ -31,14 +31,14 @@ struct
end
fun writeVar w v =
- if v > 7
+ if v > CodeGen.tempReg
then raise Fail ("var out of range: " ^ Int.toString v)
else lowByte w (Word.fromInt v)
fun writeOffset w i =
- if ~128 > i orelse i > 127
+ if 0 > i orelse i > 127
then raise Fail ("offset out of range: " ^ Int.toString i)
- else lowByte w
+ else lowByte w (Word.fromInt i)
structure IntMap = Map(type k = int val cmp = Int.compare);
@@ -58,13 +58,13 @@ struct
makeOpcode w 2 false false
| Syntax.OPoke (off, p, v) =>
(makeOpcode w 3 (isConst v) false ;
- writeInt w off ;
+ writeOffset w off ;
writeVar w p ;
writeValue w v)
| Syntax.OPeek (r, off, v) =>
(makeOpcode w 4 (isConst v) false ;
writeVar w r ;
- writeInt w off ;
+ writeOffset w off ;
writeValue w v)
| Syntax.OShuf (r, v) =>
(makeOpcode w 5 (isConst v) false ;