GREF_CALL
ページ作った。ってか、昨晩のエントリ、GREF-TAIL-CALL だし。
正しくは以下とか?
gosh> (disasm (lambda () (+ (x 1 2 3) 4))) main_code (name=#f, code=0x80f9cc0, size=12, const=2, stack=13): args: #f 0 PRE-CALL(3) 7 2 CONSTI-PUSH(1) 3 CONSTI-PUSH(2) 4 CONSTI-PUSH(3) 5 GREF-CALL(3) #<identifier user#x>; (x 1 2 3) 7 PUSH 8 CONSTI-PUSH(4) 9 GREF-TAIL-CALL(2) #<identifier user#+>; (+ (x 1 2 3) 4) 11 RET #<undef> gosh>
これ、もしかしてかけ算でも同じなのか。
gosh> (disasm (lambda () (+ (* 1 2 3) 4))) main_code (name=#f, code=0x80f9c30, size=12, const=2, stack=13): args: #f 0 PRE-CALL(3) 7 2 CONSTI-PUSH(1) 3 CONSTI-PUSH(2) 4 CONSTI-PUSH(3) 5 GREF-CALL(3) #<identifier user#*>; (* 1 2 3) 7 PUSH 8 CONSTI-PUSH(4) 9 GREF-TAIL-CALL(2) #<identifier user#+>; (+ (* 1 2 3) 4) 11 RET #<undef> gosh>
これをサンプルにして良いものかどうか。しかし昨晩エントリのナチュラルっぷりも凄いんですが。
とりあえず
情報投入してレビュ依頼も投入。