about summary refs log tree commit diff stats
path: root/baremetal/408float.mu
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2021-02-11 00:44:13 -0800
committerKartik K. Agaram <vc@akkartik.com>2021-02-11 00:44:13 -0800
commite396b3a0a354c017c7582124d51a0380a6e5c7de (patch)
tree7babc5b7340385957cd7f86a826b2307c978ac94 /baremetal/408float.mu
parent79e6d41bea6d57afdb78e4be2fc3cda0a89f57b2 (diff)
downloadmu-e396b3a0a354c017c7582124d51a0380a6e5c7de.tar.gz
7719 - baremetal: print floats
Diffstat (limited to 'baremetal/408float.mu')
-rw-r--r--baremetal/408float.mu23
1 files changed, 23 insertions, 0 deletions
diff --git a/baremetal/408float.mu b/baremetal/408float.mu
new file mode 100644
index 00000000..d1c04836
--- /dev/null
+++ b/baremetal/408float.mu
@@ -0,0 +1,23 @@
+# Some quick-n-dirty ways to create floats.
+
+fn fill-in-rational _out: (addr float), nr: int, dr: int {
+  var out/edi: (addr float) <- copy _out
+  var result/xmm0: float <- convert nr
+  var divisor/xmm1: float <- convert dr
+  result <- divide divisor
+  copy-to *out, result
+}
+
+fn fill-in-sqrt _out: (addr float), n: int {
+  var out/edi: (addr float) <- copy _out
+  var result/xmm0: float <- convert n
+  result <- square-root result
+  copy-to *out, result
+}
+
+fn rational nr: int, dr: int -> _/xmm0: float {
+  var result/xmm0: float <- convert nr
+  var divisor/xmm1: float <- convert dr
+  result <- divide divisor
+  return result
+}