remove J instr

This commit is contained in:
Mylloon 2022-12-22 16:44:00 +01:00
parent fa95a3f071
commit 122c244abc
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
4 changed files with 8 additions and 5 deletions

View file

@ -68,7 +68,7 @@ let rec compile_instr info = function
@ compile_expr info.env e
@ [ Beqz (V0, "endwhile" ^ uniq) ]
@ cb.asm
@ [ J ("while" ^ uniq) ]
@ [ B ("while" ^ uniq) ]
@ [ Label ("endwhile" ^ uniq) ]
; cnt = cb.cnt
}

View file

@ -5,7 +5,7 @@
}
let alpha = ['a'-'z' 'A'-'Z']
let num = '-'? ['0'-'9']
let num = ['0'-'9']
let bool = "true" | "false"
let ident = alpha (alpha | num | '-' | '_')*

View file

@ -58,7 +58,6 @@ type instr =
| Beq of reg * reg * label
| Beqz of reg * label
| Jal of label
| J of label
| Jr of reg
type directive = Asciiz of string
@ -150,7 +149,6 @@ let fmt_instr ?(indent = " ") = function
Printf.sprintf "%sbeq %s, %s, %s" indent (fmt_reg rs) (fmt_reg rt) l
| Beqz (r, l) -> Printf.sprintf "%sbeqz %s, %s" indent (fmt_reg r) l
| Jal l -> Printf.sprintf "%sjal %s" indent l
| J l -> Printf.sprintf "%sj %s" indent l
| Jr r -> Printf.sprintf "%sjr %s" indent (fmt_reg r)
;;

View file

@ -14,7 +14,7 @@
%token Ladd Lsub Lmul Ldiv Lseq Lsge Lsgt Lsle Lslt Lsne
%token Lif Lelse Lwhile
%left Ladd Lsub Lmul Ldiv Lbigger Lseq Lsge Lsgt Lsle Lslt Lsne
%left Ladd Lsub Lmul Ldiv Lseq Lsge Lsgt Lsle Lslt Lsne
%left Lbracedeb Lparfin Lbracefin Lreturn
%left Ltype Lbool Lint Lvar Lstr
@ -131,6 +131,11 @@ instr:
}
expr:
/* -int */
| Lsub ; n = Lint {
Val { value = Int (-n) ; pos = $startpos(n) }
}
/* int */
| n = Lint {
Val { value = Int (n) ; pos = $startpos(n) }