Mercurial > hg > CbC > old > device
comparison Changes @ 89:917947ffeb7c
power pc version
author | kono |
---|---|
date | Thu, 06 Mar 2003 23:47:42 +0900 |
parents | 5c8553d7f984 |
children | 07e3113c3c13 |
comparison
equal
deleted
inserted
replaced
88:5c8553d7f984 | 89:917947ffeb7c |
---|---|
1918 | 1918 |
1919 できたよ。まだ、テストしてない部分はあるけど。局所変数の初期化とか。 | 1919 できたよ。まだ、テストしてない部分はあるけど。局所変数の初期化とか。 |
1920 FCONST とか。3日で出来たね。 | 1920 FCONST とか。3日で出来たね。 |
1921 | 1921 |
1922 (gcc の方をやった方がいいかなぁ...) | 1922 (gcc の方をやった方がいいかなぁ...) |
1923 goto.c が通らなくなってるな。 | |
1924 | |
1925 Thu Mar 6 14:00:13 JST 2003 | |
1926 | |
1927 PowerPCのnon-lazy pointerって、テーブルに入っていてそれを読 | |
1928 み込む形式なのね。いったん、レジスタに読み込んだら、それを再 | |
1929 利用する形が良いらしい。ということは、code_gvar にキャッシュ | |
1930 を作らないといけない。しかも RLU ですか? (めんどくさ〜) | |
1931 でも、そうしないと、 | |
1932 i = i+1; | |
1933 なんてのでも、ひどい目にあってしまう。 | |
1934 | |
1935 local variable も最初に move mutilple register で大半は | |
1936 レジスタに読み込んじゃうみたいね。pointer で参照されると | |
1937 困るんでしょうけど。まぁ、31個もあれば、そういうことを | |
1938 してもあまり問題ないのかも知れないけど。 | |
1939 | |
1940 creg を破壊しない実装にすれば、少しはましになるんじゃない? | |
1941 (IA32では、それは難しいけど) | |
1942 | |
1943 Thu Mar 6 20:50:24 JST 2003 | |
1944 | |
1945 やっぱり、使った分だけregisterを保存するようなコードに | |
1946 なるみたい。one path で、それをするためには、 | |
1947 .align 2 | |
1948 _main0__: | |
1949 lwz r5,2136(r1) | |
1950 addi r1,r1,2128 | |
1951 lmw r23,-36(r1) | |
1952 mtlr r5 | |
1953 blr | |
1954 .align 2 | |
1955 .globl _main0 | |
1956 _main0: | |
1957 mflr r2 | |
1958 stmw r30,-8(r1) | |
1959 stw r2,8(r1) | |
1960 li r11,0 | |
1961 stwu r1,-480(r1) | |
1962 li r2,100 | |
1963 mtctr r2 | |
1964 mr r30,r3 | |
1965 addi r0,r1,64 | |
1966 mr r9,r0 | |
1967 b _main0__; | |
1968 とかいう感じにするしかないね。 | |
1969 | |
1970 あと引数は、レジスタに積むようになっているみたいだけど... r3 から? | |
1971 | |
1972 mflr r31 | |
1973 li r0,7 | |
1974 stw r0,56(r1) | |
1975 | |
1976 だから8個まではレジスタに積むみたいね。 | |
1977 r3-r10 だね。 | |
1978 | |
1979 構造体もregisterにコピーされるのか。そして、向う側で受取の | |
1980 コピーを行うわけだね。先頭にreturn structへのポインタがあるのも | |
1981 同じ。 | |
1982 | |
1983 (うう、memcpyしまくりだ...) | |
1984 | |
1985 浮動小数点もレジスタ渡し見たい。f1から。(なるほど) | |
1986 | |
1987 saveFPってのを呼び出して、 f24-f31をsaveするらしい。 | |
1988 (31-24)*8 数合わないな? | |
1989 | |
1990 pointer のことを考えると、レジスタだとまずいものもある | |
1991 わけだけど。アドレスを取られてからで間に合うんじゃない? | |
1992 配列などは、もともとだめだし。場所と値(?)は確保するとして。 | |
1993 | |
1994 そうか、逆に、r3-r10 は引数でなければ壊しても良いわけか。 | |
1995 (それでr9とか良く使われているわけか...) | |
1996 ということは足りなくなったら、引数をセーブすれば良いわけね。 | |
1997 (ってことは、LVAR かつ REGISTER っていう状況があるんじゃん... | |
1998 まぁ、そうだけどさ...) | |
1999 これは get_register がめんどくさそ。 | |
2000 | |
2001 どうも、r11-r12 あたりは自由に使っているらしい。 | |
2002 | |
2003 引数を作っている途中で関数呼出しするときは、どうするの? | |
2004 r30などに移動するのか? | |
2005 | |
2006 なんか知らんけど、in file call name と out file call name が | |
2007 違うみたいね。(sigh...) こんなのなんとかなるのかなぁ。 | |
2008 全部、stub にしておいて、.set で書き換えるという手もあるけど。 | |
2009 | |
2010 (さすがに一日ではできないか...) |