summaryrefslogtreecommitdiff
path: root/examples/labels.s
diff options
context:
space:
mode:
Diffstat (limited to 'examples/labels.s')
-rw-r--r--examples/labels.s37
1 files changed, 37 insertions, 0 deletions
diff --git a/examples/labels.s b/examples/labels.s
new file mode 100644
index 0000000..363b9e5
--- /dev/null
+++ b/examples/labels.s
@@ -0,0 +1,37 @@
+# int square(int num) {
+# return num * num;
+# }
+#
+#
+# int main(void) {
+# return square(2);
+# }
+
+square:
+ addi sp,sp,-32
+ sd ra,24(sp)
+ sd s0,16(sp)
+ addi s0,sp,32
+ mv a5,a0
+ sw a5,-20(s0)
+ lw a5,-20(s0)
+ mulw a5,a5,a5
+ sext.w a5,a5
+ mv a0,a5
+ ld ra,24(sp)
+ ld s0,16(sp)
+ addi sp,sp,32
+ jr ra
+main:
+ addi sp,sp,-16
+ sd ra,8(sp)
+ sd s0,0(sp)
+ addi s0,sp,16
+ li a0,2
+ call square
+ mv a5,a0
+ mv a0,a5
+ ld ra,8(sp)
+ ld s0,0(sp)
+ addi sp,sp,16
+ jr ra