Mercurial > hg > CbC > old > device
diff Changes @ 646:0d7baf338fc2
array argument continue...
author | kono |
---|---|
date | Mon, 06 Nov 2006 20:15:54 +0900 |
parents | ac1285a0f69f |
children | fe23fe842b82 |
line wrap: on
line diff
--- a/Changes Sat Nov 04 22:38:18 2006 +0900 +++ b/Changes Mon Nov 06 20:15:54 2006 +0900 @@ -9057,3 +9057,48 @@ なんか、i3 のエラーを直してないね。見送りにしたわけ? +Sat Nov 4 22:47:13 JST 2006 + + | frame pointer | stack pointer + v----> argument local <--------v + +なんだけど、これだと、local variable のoffsetが、その場で +定数にならないという問題があるんじゃないの? + +いや逆か。sp からなら、必ず定数になるわけね。 + +subroutineから、code を呼び出す時に、parallel assignment +が使えないが、この場合は、sp の値は決まっているはず。 +というか後で合わせれば良い。caller_arg を sp からの +オフセットで書き込む必要がある。 + + | frame pointer | stack pointer + v----> argument local <--|-----v + caller_arg + +というわけかな。 + +caller_arg は、関数の最後でないと決まらないので、large offset +では、やっぱり、困る。(だから、local var を fp からにしたの +だったが...) + + | frame pointer | stack pointer + v----> argument local <--|-----v + caller_arg + +にすればいいんだろうけど... 許されるのか? いくつかのアーキテクチャ +では、そうなっているらしいが。 + +まぁ、MAX caller arg を決めるっていう手もあるけどね。その方が +楽か.... + +Sun Nov 5 14:21:19 JST 2006 + +expr16 で statement expression をparseしようと思うと、 +IVARが生成されてしまうので気まずい。pexpr するのは、 +少しおかしい。 + +やっぱり parse してからcompileするモード作る? そうすると、 +いろいろ出来るようになる。inmode=PARSE とかいうのを作るか。 + +細かい問題があるみたいだね。