From 59148d666a78d671198d56caabe7fe4d7fb3fee1 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Sun, 31 Mar 2024 23:09:14 +0300 Subject: produce some very limited assembly output + Several subsystems missing critical features, but enough to do some basic things like calling procedures, printing to screen and doing loops --- tests/1.qbt | 15 +++++++++++---- tests/2.qbt | 4 ++++ tests/3.qbt | 13 +++++++++++++ tests/4.qbt | 18 ++++++++++++++++++ tests/5.qbt | 5 +++++ 5 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 tests/2.qbt create mode 100644 tests/3.qbt create mode 100644 tests/4.qbt create mode 100644 tests/5.qbt (limited to 'tests') diff --git a/tests/1.qbt b/tests/1.qbt index e45553a..e87fddc 100644 --- a/tests/1.qbt +++ b/tests/1.qbt @@ -1,12 +1,19 @@ +do_stuff (i27 a0, i27 a1) +{ + i27 r0 = a0 + a1; + i27 r1 = a0 - a1; + => (r0, r1); +} + /* this is a function of some kind */ -do_stuff (i27 a0, i27 a1 => i27,,) +main (i27 a0, i27 a1) { i27 r0 = a0 + a1; /* r0 is reassigned */ - (i27 r0, i27 r1,) = &do_more_stuff (r0, i9 29); + &do_stuff (r0, i9 29) => (r0, r1); r0 < r1 -> somewhere_else; - => (r1,,); + => (r1); somewhere_else: - => (r0,,); + => (r0); } diff --git a/tests/2.qbt b/tests/2.qbt new file mode 100644 index 0000000..9c63342 --- /dev/null +++ b/tests/2.qbt @@ -0,0 +1,4 @@ +main() +{ + => (); +} diff --git a/tests/3.qbt b/tests/3.qbt new file mode 100644 index 0000000..7d3217a --- /dev/null +++ b/tests/3.qbt @@ -0,0 +1,13 @@ +main() +{ + i27 i = 0; + i27 max = 1000000000; + i27 sum = 0; + +top: + i27 sum = sum + i; + i27 i = i + i27 1; + i < max -> top; + &_putchar(sum) => (); + => (); +} diff --git a/tests/4.qbt b/tests/4.qbt new file mode 100644 index 0000000..0a5734a --- /dev/null +++ b/tests/4.qbt @@ -0,0 +1,18 @@ +main() +{ + &_putchar (i9 'H') => (); + &_putchar (i9 'e') => (); + &_putchar (i9 'l') => (); + &_putchar (i9 'l') => (); + &_putchar (i9 'o') => (); + &_putchar (i9 ',') => (); + &_putchar (i9 ' ') => (); + &_putchar (i9 'W') => (); + &_putchar (i9 'o') => (); + &_putchar (i9 'r') => (); + &_putchar (i9 'l') => (); + &_putchar (i9 'd') => (); + &_putchar (i9 '!') => (); + &_putchar (i9 '\n') => (); + => (); +} diff --git a/tests/5.qbt b/tests/5.qbt new file mode 100644 index 0000000..213592e --- /dev/null +++ b/tests/5.qbt @@ -0,0 +1,5 @@ +main() +{ + &_putchar(i9 'H') => (); + => (); +} -- cgit v1.3