diff --git a/content/多段階計算を命令型VMインストラクションで表現する.md b/content/多段階計算を命令型VMインストラクションで表現する.md index 2275e21b..d7931993 100644 --- a/content/多段階計算を命令型VMインストラクションで表現する.md +++ b/content/多段階計算を命令型VMインストラクションで表現する.md @@ -26,7 +26,8 @@ decl_levelでレベル0になったら...うーん ```ocaml let n = 100 in let m = 200 in - ~( let addc x y = &(~x + ~y) in addc &n &m ) +let addc x y = &(~x + ~y) in + ~(addc &n &m ) ``` `addc`の型は`&int -> &int` @@ -37,8 +38,20 @@ Escapeはあくまで埋め込むだけで評価をするわけじゃないん `&(~x + ~y)`ここだけ取り出すとどうだろう ``` +fn addc x y // reg 1,2にはプログラム辺のインデックス mov 1 x mov 2 y add 1 1 2 //最後は必ずこうなるわけで + +fn main +movc 1 100 +movc 2 200 + +lift 1 1 +lift 2 2 +startescape +call "addc" 1 2 +endescape +ret 1 ```