APの素案
(1)
- APは、aclにおける標準的なポインタ(にするかもしれないもの)
- 32bitの場合:
上位4bit | | 0xxx | ALL_OK相当 | 10xx | オフセット24bit(16MB), rebirth-count:2bit, セレクタ:4bit | 110x | オフセット16bit(64KB), rebirth-count:2bit, セレクタ:11bit | 1110 | オフセット8bit(256B), rebirth-count:2bit, セレクタ:18bit | 1111 | オフセット2bit(4B), rebirth-count:2bit, セレクタ:24bit |
- 64bitの場合:
上位4bit | | 0xxx | ALL_OK相当 | 10xx | オフセット48bit(256TB), rebirth-count:4bit, セレクタ:10bit | 110x | オフセット32bit(4GB), rebirth-count:4bit, セレクタ:25bit | 1110 | オフセット16bit(256B), rebirth-count:4bit, セレクタ:40bit | 1111 | オフセット8bit(4B), rebirth-count:4bit, セレクタ:48bit |
(2)
- AP_0(a, sizTyp):
- AP_1(a, sizTyp):
- AP_0()と基本的には同じだけど、設定が見つからないときにはエラーにする。
- 設定よってあえてALL_OK相当にしている場合は、エラーにならない。
- AP_CStr("hello")
- 文字列定数(過剰に作らないように、AP_0を内部で併用する、しかも設定は別建てである)
- AP_set0(p, base, limit, flgRWX)
- AP_set1(p, base, limit, flgRWX)
- 同じアドレスでも、違う粒度がありうる。だからアドレスからだけでは適切なセレクタが得られないのでは?
- いっしょに型を渡すのはどうか?その型で連続アクセス可能なサイズとする。
- 1個だけにしてほしい時は、どうしたらいいだろうか?
- AP_0sとかAP_1sとかにしたらいい?
|