実行可能メモリ領域の管理
地味に難しい問題。
libffiは独自にアロケータを持って実行可能ページを管理している。
moshはMinGWとLinux/UNIXで実装方針が違っている。もちろんどっちかに統一したほうが良いし、僕は自分の実装の方が正しい方針だと考えている。
ページ単位方針
- CPUにとってこのような保護属性を設定できるのはページが最小の単位
- メモリ空間の管理戦略をカスタマイズ出来る
- 生成したコードはメモリ空間の上位に纏めるといった処理が出来る。
デメリットはメモリがもったいないということで、libffiはその要求のために独自のメモリアロケータを持っている。