マンデルブロ集合を出力するRISC-Vコードを出力
https://gyazo.com/f8ea8abc56b47f4d7ba3318f37b306be
実装が足りてない分岐命令を実装したら動いた。
code:diff
diff --git a/RV32/emit.ml b/RV32/emit.ml
index bfe5617..1a2bfbc 100644
--- a/RV32/emit.ml
+++ b/RV32/emit.ml
@@ -146,8 +146,8 @@ and g' oc = function (* 各命令のアセンブリ生成 (caml2html: emit_gprim
Printf.fprintf oc "\tcmpw\tcr7@, %s, %s\n" (reg x) (reg y);
g'_tail_if oc e1 e2 "bge" "blt"
| Tail, IfGE(x, C(y), e1, e2) ->
- Printf.fprintf oc "\tcmpwi\tcr7@@@@, %s, %d\n" (reg x) y;
- g'_tail_if oc e1 e2 "bge" "blt"
+ Printf.fprintf oc "\tli %s, %d\n" (reg reg_tmp) y;
+ g'_tail_if_new oc (reg x) (reg reg_tmp) e1 e2 "bge" "blt"
| Tail, IfFEq(x, y, e1, e2) ->
(* 新しい if 実装済み(浮動小数点数対応) *)
Printf.fprintf oc "\tfeq.s %s, %s, %s\n" (reg reg_tmp) (reg x) (reg y);