diff options
| author | Rose Hogenson <rosehogenson@posteo.net> | 2024-04-27 08:28:40 -0700 |
|---|---|---|
| committer | Rose Hogenson <rosehogenson@posteo.net> | 2024-04-27 08:28:40 -0700 |
| commit | 9f5889c1263d63b953b3a324da07321deef5ca58 (patch) | |
| tree | eb4a9be038660ced671da9fbb4617812f7cd2125 /codegen.sml | |
| parent | 1d35d3c0780b1f5392517fe3c1e30950de79efb4 (diff) | |
| download | sml-9f5889c1263d63b953b3a324da07321deef5ca58.tar.zst | |
Add integer arithmetic.
Diffstat (limited to 'codegen.sml')
| -rw-r--r-- | codegen.sml | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/codegen.sml b/codegen.sml index c7f0f2d..30928d4 100644 --- a/codegen.sml +++ b/codegen.sml @@ -144,7 +144,11 @@ struct in bodyASM @ funcsASM end - | Syntax.CPrimop (Syntax.PExit, [arg], _, _)=> [Syntax.OExit (translateVal arg)] + | Syntax.CPrimop (Syntax.PExit, [arg], _, _) => [Syntax.OExit (translateVal arg)] + | Syntax.CPrimop (Syntax.PAdd, [x, y], [res], [k]) => Syntax.OAdd (translate res, translateVal x, translateVal y) :: go k + | Syntax.CPrimop (Syntax.PSub, [x, y], [res], [k]) => Syntax.OSub (translate res, translateVal x, translateVal y) :: go k + | Syntax.CPrimop (Syntax.PMul, [x, y], [res], [k]) => Syntax.OMul (translate res, translateVal x, translateVal y) :: go k + | Syntax.CPrimop (Syntax.PDiv, [x, y], [res], [k]) => Syntax.ODiv (translate res, translateVal x, translateVal y) :: go k | _ => raise Fail ("malformed CPS:\n" ^ Syntax.cexpToString expr) in go expr end |
