about summary refs log tree commit diff stats
path: root/apps/tile/int-stack.mu
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2020-09-22 00:27:56 -0700
committerKartik Agaram <vc@akkartik.com>2020-09-22 00:27:56 -0700
commit8152b0d109a3ee01b7a357926aa01b1a8de3f366 (patch)
tree00e0717e85cafccd60879d8008bf2ade7cd8e2a7 /apps/tile/int-stack.mu
parent04d06dfe537703885ae30230940e5756fecdcb19 (diff)
downloadmu-8152b0d109a3ee01b7a357926aa01b1a8de3f366.tar.gz
6832 - tile: right-justify numbers
Fails noisily for negative integers so far.
Diffstat (limited to 'apps/tile/int-stack.mu')
-rw-r--r--apps/tile/int-stack.mu22
1 files changed, 22 insertions, 0 deletions
diff --git a/apps/tile/int-stack.mu b/apps/tile/int-stack.mu
index 3bb9336f..74aa16fd 100644
--- a/apps/tile/int-stack.mu
+++ b/apps/tile/int-stack.mu
@@ -67,3 +67,25 @@ fn int-stack-length _self: (addr int-stack) -> result/eax: int {
   var top-addr/eax: (addr int) <- get self, top
   result <- copy *top-addr
 }
+
+fn max-stack-value _self: (addr int-stack) -> result/eax: int {
+  var self/esi: (addr int-stack) <- copy _self
+  var data-ah/edi: (addr handle array int) <- get self, data
+  var _data/eax: (addr array int) <- lookup *data-ah
+  var data/edi: (addr array int) <- copy _data
+  var top-addr/ecx: (addr int) <- get self, top
+  var i/ebx: int <- copy 0
+  result <- copy 0
+  {
+    compare i, *top-addr
+    break-if->=
+    var g/edx: (addr int) <- index data, i
+    compare *g, result
+    {
+      break-if-<=
+      result <- copy *g
+    }
+    i <- increment
+    loop
+  }
+}