{push,pop}_windstack()の変更

実行時の関数引数のアドレスは、
スタックフレームからの相対アドレスとしてコンパイル時に決定できるので、
そのように修正するための途中。

push_windstack() へは、レジスター経由でのアドレスではなく、変数の型のサイズをプッシュする。
このサイズは、直前にプッシュした値に加算されてプッシュされる。
例:
        push_windstack(1); /* windstack {[0]=1} */
        push_windstack(2); /* windstack {[0]=1, [1]=[0]+2=3 */
        push_windstack(3); /* windstack {[0]=1, [1]=3, [2]=[1]+3=6 */

pop_windstack() では、変数データのアドレスの、スタックフレームからの相対距離の値をポップする。
(正の値として返すので注意)
例:
        /* windstack {[0]=1, [1]=3, [2]=6} としてスタックに積まれてるとして */
        pop_windstack() -> 6
        pop_windstack() -> 3
        pop_windstack() -> 1

nest_windstack() では、次に呼ばれるpush_windstack()において、
それまでの累積を0として新たに積むように設定する。
例:
        /* windstack {[0]=1, [1]=3, [2]=6} としてスタックに積まれてるとして */
        nest_windstack();
        push_windstack(1); /* windstack {[0]=1, [1]=3, [2]=6, [3]=1} */
        push_windstack(1); /* windstack {[0]=1, [1]=3, [2]=6, [3]=1, [4]=2} */
        push_windstack(1); /* windstack {[0]=1, [1]=3, [2]=6, [3]=1, [4]=2, [5]=3} */

        pop_windstack() -> 3;
        pop_windstack() -> 2;
        pop_windstack() -> 1;
        pop_windstack() -> 6;
        pop_windstack() -> 3;
        pop_windstack() -> 1;
        pop_windstack() -> error

init_windstack() はワインドスタックの初期化を行う。

このコミット時点では、これら変更に対応した部分の修正がまだなので、ビルドが通らなくなる。