2010年01月12日
GCC の名前付きアドレス空間サポート
Linux のソースコードでは、ユーザ空間とカーネル空間のポインタを区別するために、__user や __iomem などのマクロを変数に付けています。これは最終的には noderef や address_space(n) などの attribute に落ちて、sparse チェッカーというプログラムによってチェックされます。
参考: sparseチェッカー
これと同じように、異なるアドレス空間を指すポインタ変数に、アドレス空間ごとに任意の名前を付け、静的チェックや自動的に適切なコードを生成してくれるようなしくみがコンパイラにあれば、メモリが複数領域に分かれているような環境でのプログラミング時に便利です。これが名前付きアドレス空間サポートです。
時系列は追いきれてないのですが、2008 年 4 月に RFC が GCC の ML に提案されたようです。
RFC: named address space support
named-addr-spaces-branch という branch が存在し、更新はメインラインにマージされるそうです。
今のところは CELL/spu ターゲット限定のようです。
3.17.37 SPU Options
この方の記事が詳しいです。PIC や AVR などのプロセッサでは、ROM/RAM/FLASH というようにメモリ領域が分かれているため、名前付きアドレス空間のサポートが必要になってくるそうです。
ARMにはまった: GCCの名前つきアドレス空間サポート
ARMにはまった: まだまだねばるPIC用GCC、別アドレス空間の話
参考: sparseチェッカー
これと同じように、異なるアドレス空間を指すポインタ変数に、アドレス空間ごとに任意の名前を付け、静的チェックや自動的に適切なコードを生成してくれるようなしくみがコンパイラにあれば、メモリが複数領域に分かれているような環境でのプログラミング時に便利です。これが名前付きアドレス空間サポートです。
時系列は追いきれてないのですが、2008 年 4 月に RFC が GCC の ML に提案されたようです。
RFC: named address space support
named-addr-spaces-branch という branch が存在し、更新はメインラインにマージされるそうです。
今のところは CELL/spu ターゲット限定のようです。
3.17.37 SPU Options
この方の記事が詳しいです。PIC や AVR などのプロセッサでは、ROM/RAM/FLASH というようにメモリ領域が分かれているため、名前付きアドレス空間のサポートが必要になってくるそうです。
ARMにはまった: GCCの名前つきアドレス空間サポート
ARMにはまった: まだまだねばるPIC用GCC、別アドレス空間の話