Mercurial > hg > CbC > old > device
comparison Changes @ 93:8f5d61239b93
*** empty log message ***
author | kono |
---|---|
date | Sun, 09 Mar 2003 18:31:00 +0900 |
parents | e7f8515ba882 |
children | 1ad7045741a7 |
comparison
equal
deleted
inserted
replaced
92:e7f8515ba882 | 93:8f5d61239b93 |
---|---|
2014 | 2014 |
2015 get_register は絶対失敗しないようにできるんじゃないか? | 2015 get_register は絶対失敗しないようにできるんじゃないか? |
2016 | 2016 |
2017 label があると、code_base cache はclearしないといけない。 | 2017 label があると、code_base cache はclearしないといけない。 |
2018 それを判断するには fwddef をhookする必要があるけど。 | 2018 それを判断するには fwddef をhookする必要があるけど。 |
2019 | |
2020 Fri Mar 7 09:17:10 JST 2003 | |
2021 | |
2022 問題は、 | |
2023 register allocation | |
2024 と | |
2025 function call/goto call | |
2026 の構成だな。goto の方は machine dependentなところは | |
2027 ほとんどない。register のsaveさえ必要ないから。 | |
2028 | |
2029 register allocation だけど。 | |
2030 r0 | |
2031 r1 frame pointer (or stack pointer ) | |
2032 r30 jj | |
2033 r31 relocation register | |
2034 r0,r1,r2 システムで使う | |
2035 r0-r10 引数 | |
2036 引数でないところは優先的に使う | |
2037 r20-r29 セーブして使う領域 | |
2038 | |
2039 r10-r19 はどうなんだろう? セーブしないのか? | |
2040 | |
2041 ia32 の方でもfppのスタックを関数呼び出しのときに吐き出した方が | |
2042 良い。 | |
2043 | |
2044 r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 | |
2045 r10 r11 r12 r13 r14 r15 r16 | |
2046 r28 r29 r30 r31 | |
2047 | |
2048 なので、もののみごとに、17-27 までが使われてないね。 | |
2049 | |
2050 ということは、関す呼出し時には、保存されるレジスタはないと | |
2051 思った方が良いってこと? あるいは、r17-r28 は保存されると | |
2052 思って良いのかな。 | |
2053 | |
2054 Sat Mar 8 19:28:42 JST 2003 | |
2055 | |
2056 関数呼び出し時のレジスタセーブを避けるためには、関数呼び出し | |
2057 を優先して実行してやれば良い。関数呼び出しの結果は局所変数に | |
2058 セーブする。 | |
2059 f(g(h(a)+1)+2) | |
2060 は、 | |
2061 a1=h(a) | |
2062 a2=g(a1+1) | |
2063 f(a1+2) | |
2064 となる。そうすれば、関数呼び出しのときのスタックはかならず0になる。 | |
2065 | |
2066 でも、結局、引数は関数呼び出しの前にセーブするのね。だったら、 | |
2067 そんなことしないで、セーブすれば良いのか。 | |
2068 |