about summary refs log tree commit diff stats
path: root/linux/raytracing/1.mu
diff options
context:
space:
mode:
Diffstat (limited to 'linux/raytracing/1.mu')
-rw-r--r--linux/raytracing/1.mu31
1 files changed, 31 insertions, 0 deletions
diff --git a/linux/raytracing/1.mu b/linux/raytracing/1.mu
new file mode 100644
index 00000000..fbc76f1d
--- /dev/null
+++ b/linux/raytracing/1.mu
@@ -0,0 +1,31 @@
+# Listing 1 of https://raytracing.github.io/books/RayTracingInOneWeekend.html
+# (simplified)
+#
+# To run (on Linux):
+#   $ git clone https://github.com/akkartik/mu
+#   $ cd mu
+#   $ ./translate_mu apps/raytracing/1.mu
+#   $ ./a.elf > 1.ppm
+
+fn main -> _/ebx: int {
+  print-string 0, "P3\n256 256\n255\n"
+  var j/ecx: int <- copy 0xff
+  {
+    compare j, 0
+    break-if-<
+    var i/eax: int <- copy 0
+    {
+      compare i, 0xff
+      break-if->
+      print-int32-decimal 0, i
+      print-string 0, " "
+      print-int32-decimal 0, j
+      print-string 0, " 64\n"
+      i <- increment
+      loop
+    }
+    j <- decrement
+    loop
+  }
+  return 0
+}