From 2ff85a75058cebc931ba4394f4872d716b8dd8d9 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Mon, 8 Sep 2025 15:30:44 +0100 Subject: [PATCH] doc: sample: add for and while loop samples --- doc/sample/ForLoop.im | 8 ++++++++ doc/sample/ForLoop.mie | 31 +++++++++++++++++++++++++++++++ doc/sample/WhileLoop.im | 13 +++++++++++++ doc/sample/WhileLoop.mie | 31 +++++++++++++++++++++++++++++++ 4 files changed, 83 insertions(+) create mode 100644 doc/sample/ForLoop.im create mode 100644 doc/sample/ForLoop.mie create mode 100644 doc/sample/WhileLoop.im create mode 100644 doc/sample/WhileLoop.mie diff --git a/doc/sample/ForLoop.im b/doc/sample/ForLoop.im new file mode 100644 index 0000000..a465be0 --- /dev/null +++ b/doc/sample/ForLoop.im @@ -0,0 +1,8 @@ + +str = "hello". + +for c in str do + cout put:c +end + +cout put:"done" diff --git a/doc/sample/ForLoop.mie b/doc/sample/ForLoop.mie new file mode 100644 index 0000000..c41feda --- /dev/null +++ b/doc/sample/ForLoop.mie @@ -0,0 +1,31 @@ +data @cout = external global id + +data @.str.0 = str "hello" + +define void @init() static { +entry: + %0 = load str, ptr @.str.0 + %str = alloca id + store str %0, ptr %str + + %1 = load id, ptr %str + %for.it = msg id, id %1, @_M8iteratorE + br label %for.cond +for.cond: + %for.value = msg id, id %for.it, @_M5valueE + %for.finished = cmp eq id %for.value, null + br i1 %for.finished, label %for.end, label %for.body +for.body: + %c = alloca id + store id %for.value, ptr %c + + %2 = load id, ptr @cout + %3 = load id, ptr %c + msg void, id %2, @_M03putE [ id %3 ] + br label %for.inc +for.inc: + msg void, id %for.it, @_M8moveNextE + br label %for.cond +for.end: + ret void +} diff --git a/doc/sample/WhileLoop.im b/doc/sample/WhileLoop.im new file mode 100644 index 0000000..75d1b41 --- /dev/null +++ b/doc/sample/WhileLoop.im @@ -0,0 +1,13 @@ +i = 0. +sum = 0. + +while i < 10 do + x = 2. + if x == 0 then + continue + else + x += 1 + end +end + +cout put:"done" diff --git a/doc/sample/WhileLoop.mie b/doc/sample/WhileLoop.mie new file mode 100644 index 0000000..6820ed2 --- /dev/null +++ b/doc/sample/WhileLoop.mie @@ -0,0 +1,31 @@ +data @cout = external global id + +data @.str.0 = str "done" + +define void @init() static { +entry: + %i = alloca i32 + store i32 #0, ptr %i + + %sum = alloca i32 + store i32 #0, ptr %sum + +while.cond: + %0 = load i32, ptr %i + %cmptmp = cmp lt i32 %0, #10 + br i1 %cmptmp, label %while.body, label %while.end + +while.body: + %1 = load i32, ptr %i + %2 = load i32, ptr %sum + %addtmp = add i32 %1, %2 + store i32 %addtmp, ptr %sum + br label %while.cond + +while.end: + %3 = load str, ptr @.str.0 + %4 = load id, ptr @cout + msg void, id %4, @_M03putE [ str %3 ] + + ret void +}