diff options
| author | Kai Gunger <kgunger12@gmail.com> | 2026-05-09 20:53:10 -0400 |
|---|---|---|
| committer | Kai Gunger <kgunger12@gmail.com> | 2026-05-09 20:53:10 -0400 |
| commit | 6a605be056216c5979561eb51f723f84e9f0c6d0 (patch) | |
| tree | 9ef49310e7475c7e8062026dfe53b765ab646d11 /tnslc/compile/var.tnsl | |
| parent | 9038ecd9423e6181063ae5a9846c617a92e6ceaf (diff) | |
[tnslc] passable bool ops for noworigin
Diffstat (limited to 'tnslc/compile/var.tnsl')
| -rw-r--r-- | tnslc/compile/var.tnsl | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/tnslc/compile/var.tnsl b/tnslc/compile/var.tnsl index 122233a..5f87cc7 100644 --- a/tnslc/compile/var.tnsl +++ b/tnslc/compile/var.tnsl @@ -1662,6 +1662,8 @@ struct Var { self._unary(buf, "dec\0") ;/ + # Boolean related + /; test (~CompBuf buf) ~uint8 to_str = self._set_prim_l(buf) buf`.add_c(" cmp \0") @@ -1682,6 +1684,63 @@ struct Var { _delete(to_str) ;/ + /; cmov (~CompBuf buf, ~Var a, ~Var b, ~uint8 cc) + + buf`.add_c(" cmp \0") + ~uint8 a_str = a`._set_prim_l(buf) + buf`.add_c(a_str) + _delete(a_str) + buf`.add_c(", \0") + ~uint8 b_str = b`._set_prim_r(buf, a) + buf`.add_c(b_str) + _delete(b_str) + buf`.add_c("\n\0") + + buf`.add_c(" mov ax, 0\n\0") + buf`.add_c(" mov cx, 1\n\0") + buf`.add_c(" cmov\0") + buf`.add_c(cc) + buf`.add_c(" ax, cx ; Compare set\n\0") + + ~uint8 to_str = self._set_prim_l(buf) + + Var ax = self.copy() + ax.loc = 1 + + buf`.add_c(" mov \0") + ~uint8 to_str = self._set_prim_l(buf) + buf`.add_c(to_str) + _delete(to_str) + buf`.add_c(", \0") + ~uint8 ax_str = ax._set_prim_r(buf, ~self) + buf`.add_c(ax_str) + _delete(ax_str) + buf`.add_c(" ; Mov after compare\n\0") + ;/ + + /; cset (~CompBuf buf, ~uint8 cc) + buf`.add_c(" mov ax, 0\n\0") + buf`.add_c(" mov cx, 1\n\0") + buf`.add_c(" cmov\0") + buf`.add_c(cc) + buf`.add_c(" ax, cx ; Compare set\n\0") + + ~uint8 to_str = self._set_prim_l(buf) + + Var ax = self.copy() + ax.loc = 1 + + buf`.add_c(" mov \0") + ~uint8 to_str = self._set_prim_l(buf) + buf`.add_c(to_str)scope + _delete(to_str) + buf`.add_c(", \0") + ~uint8 ax_str = ax._set_prim_r(buf, ~self) + buf`.add_c(ax_str) + _delete(ax_str) + buf`.add_c(" ; Mov after compare\n\0") + ;/ + /; member (~CompBuf buf, ~uint8 name) [Var] /; if (self.is_struct() == false) _printf("ERROR: Attempted to get a member named \"\0") |