diff options
| author | Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.org> | 2019-12-27 17:08:40 -0500 |
|---|---|---|
| committer | Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.org> | 2019-12-27 17:08:40 -0500 |
| commit | bc5fc660caa7881458e0d62905a1aec38dd2aaf0 (patch) | |
| tree | 9d1ac03bc1f5b5c68c51377d99c96c616b7a3ec4 /asm.myr | |
| parent | 2122e32f072378758c8a4c693036678300d40631 (diff) | |
Implement SE instruction.
Diffstat (limited to 'asm.myr')
| -rw-r--r-- | asm.myr | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -128,6 +128,18 @@ const emitinstr = {p -> `std.Err(std.fmt("invalid arguments to JP: {}, {}", p[1], p[2])) ;; ;; + | "SE": + if p.len < 3 + -> `std.Err("SE missing arguments") + ;; + match (parselit(p[1]), parselit(p[2])) + | (`Register(m), `Number(n)): + b = `std.Some([0x30 | (m & 0x0f), (n & 0xff)]) + | (`Register(m), `Register(n)): + b = `std.Some([0x50 | (m & 0x0f), (n & 0x0f) << 1]) + | _: + -> `std.Err(std.fmt("invalid arguments to SE: {}, {}", p[1], p[2])) + ;; | _: -> `std.Err(std.fmt("unrecognized instruction {}", p[0])) ;; |