[obsidian] vault backup: 2024-11-17 01:44:15[
All checks were successful
Build / build (push) Successful in 3m19s

This commit is contained in:
Matsuura Tomoya(Windows) 2024-11-17 01:44:15 +09:00
parent 47ec0d1070
commit 3b53c3c901

View File

@ -30,27 +30,34 @@ let addc x y = &(~x + ~y) in
~(addc &n &m ) ~(addc &n &m )
``` ```
`addc`の型は`&int -> &int` `addc`の型は`(&int,&int) -> &int`
CodeもEscapeもネストできる構造なんだから命令型に直すとなにかしらのスタック構造を操作するものになるはず CodeもEscapeもネストできる構造なんだから命令型に直すとなにかしらのスタック構造を操作するものになるはず
Escapeはあくまで埋め込むだけで評価をするわけじゃないんだよな Escapeはあくまで埋め込むだけで評価をするわけじゃないんだよな
`&(~x + ~y)`ここだけ取り出すとどうだろう `&(~x + ~y)`ここだけ取り出すとどうだろう
`~x`はxを評価した後にエスケープする、ってことだもんなあ
``` ```
fn addc x y // reg 1,2にはプログラム辺のインデックス fn addc x y // reg 1,2にはプログラム辺のインデックス
startescape
mov 1 x mov 1 x
endescape
startescape
mov 2 y mov 2 y
endescape
add 1 1 2 //最後は必ずこうなるわけで add 1 1 2 //最後は必ずこうなるわけで
fn main fn main
movc 1 100 movc 1 100
movc 2 200 movc 2 200
lift 1 1 lift 2 1
lift 2 2 lift 3 2
startescape startescape
call "addc" 1 2 move 1 "addc"
call 1 2 1
endescape endescape
ret 1 ret 1
``` ```