about summary refs log tree commit diff stats
path: root/apps/tile/int-stack.mu
diff options
context:
space:
mode:
Diffstat (limited to 'apps/tile/int-stack.mu')
-rw-r--r--apps/tile/int-stack.mu20
1 files changed, 20 insertions, 0 deletions
diff --git a/apps/tile/int-stack.mu b/apps/tile/int-stack.mu
index 5e7a2223..3bb9336f 100644
--- a/apps/tile/int-stack.mu
+++ b/apps/tile/int-stack.mu
@@ -47,3 +47,23 @@ $pop-int-stack:body: {
   val <- copy *result-addr
 }
 }
+
+fn int-stack-empty? _self: (addr int-stack) -> result/eax: boolean {
+$int-stack-empty?:body: {
+  var self/esi: (addr int-stack) <- copy _self
+  var top-addr/eax: (addr int) <- get self, top
+  compare *top-addr, 0
+  {
+    break-if-!=
+    result <- copy 1  # true
+    break $int-stack-empty?:body
+  }
+  result <- copy 0  # false
+}
+}
+
+fn int-stack-length _self: (addr int-stack) -> result/eax: int {
+  var self/esi: (addr int-stack) <- copy _self
+  var top-addr/eax: (addr int) <- get self, top
+  result <- copy *top-addr
+}