diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2023-11-19 20:25:29 +0200 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2023-11-19 20:25:29 +0200 |
| commit | 910ad02d86672cc3020cc5df0fa451ef4dd69bfd (patch) | |
| tree | d5711894ee14c62caee8f8b744cac2d28f92c87b /tasm/src/parser.y | |
| parent | 51789d2ed69515ab81bee6633bac3d94c519dc03 (diff) | |
| download | tri-910ad02d86672cc3020cc5df0fa451ef4dd69bfd.tar.gz tri-910ad02d86672cc3020cc5df0fa451ef4dd69bfd.zip | |
implement jalr
Diffstat (limited to 'tasm/src/parser.y')
| -rw-r--r-- | tasm/src/parser.y | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/tasm/src/parser.y b/tasm/src/parser.y index a39c9c1..204fe0a 100644 --- a/tasm/src/parser.y +++ b/tasm/src/parser.y @@ -73,7 +73,7 @@ %token ecall ebreak pcall %token fence /* meta */ -%token li la nop +%token mv li la nop /* m (avoid name clash with stdlib div) */ %token mul diV rem @@ -292,8 +292,8 @@ i {emit_reloc(ctx, RELOC_J, $4); emit_u(ctx, OPCODE_JAL, $2, 0);} - | jalr gpr "," gpr "," imm - {emit_i(ctx, OPCODE_JALR, $2, 0, $4, $6);} + | jalr gpr "," imm "(" gpr ")" + {emit_i(ctx, OPCODE_JALR, $2, 0, $6, $4);} | beq gpr "," gpr "," addr {emit_reloc(ctx, RELOC_B, $6); @@ -337,6 +337,9 @@ i {emit_d(ctx, OPCODE_DIOP, $2, $4, $6, check_nop3($8));} /* meta */ + | mv gpr "," gpr + {emit_i(ctx, OPCODE_OP_IMM, $2, OP_IMM_ADDI, $4, 0);} + | nop {emit_i(ctx, OPCODE_OP_IMM, X0_NUM, OP_IMM_ADDI, X0_NUM, 0);} |
