diff options
| author | Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.org> | 2019-12-27 17:40:02 -0500 |
|---|---|---|
| committer | Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.org> | 2019-12-27 17:40:02 -0500 |
| commit | e3feedee60a3b1b5177c8e0576f307a2f473a589 (patch) | |
| tree | d1699eee24daf079ad336947c039807457c54954 | |
| parent | e7bf636a1cb9253ad32b83e0fbe14504e25fb2b6 (diff) | |
Implement SUBN instruction.
| -rw-r--r-- | asm.myr | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -221,7 +221,15 @@ const emitinstr = {p | _: -> `std.Err(std.fmt("invalid argument to SUB: {}", p[1])) ;; - + | "SUBN": + if p.len < 3 + -> `std.Err("SUBN missing arguments") + ;; + match (parselit(p[1]), parselit(p[2])) + | (`Register(m), `Register(n)): b = `std.Some([0x80 | (m & 0x0f), ((n & 0x0f) << 1) | 0x07]) + | _: + -> `std.Err(std.fmt("invalid argument to SUBN: {}", p[1])) + ;; | _: -> `std.Err(std.fmt("unrecognized instruction {}", p[0])) ;; |