summaryrefslogtreecommitdiff
path: root/examples/directives.s
diff options
context:
space:
mode:
Diffstat (limited to 'examples/directives.s')
-rw-r--r--examples/directives.s35
1 files changed, 35 insertions, 0 deletions
diff --git a/examples/directives.s b/examples/directives.s
new file mode 100644
index 0000000..df2ebb3
--- /dev/null
+++ b/examples/directives.s
@@ -0,0 +1,35 @@
+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
+.LC0:
+ .string "%d\n"
+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 a1,a5
+ lui a5,%hi(.LC0)
+ addi a0,a5,%lo(.LC0)
+ call printf
+ li a5,0
+ mv a0,a5
+ ld ra,8(sp)
+ ld s0,0(sp)
+ addi sp,sp,16
+ jr ra