diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-03-15 20:03:26 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-03-15 20:03:26 -0400 |
| commit | efb0a239c4aaee370d97caf216859a724d7f72bd (patch) | |
| tree | d13e9523103fab6c7c2eebbc654847f4924ea603 /examples | |
| parent | 68b9f87bc3b6bd6ccb3773641578b0d914e61104 (diff) | |
feat: Parsing modifiers and directives
Support added for parsing a limited set of directives and for all access
modifiers.
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/directives.s | 35 | ||||
| -rw-r--r-- | examples/labels.s | 37 |
2 files changed, 72 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 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 |
