借り初めのひみつきち

仮ブログです。

最小ステップで作る UEFI OS v0.4

そろそろ GUI の実装に入りたい感じですね。

github.com

メモリの拡張

現在実装されているメモリ管理はコンパイル時に静的に割り当てたブロックを切り取って分配する手抜き実装でした。
今まではそこまで大量のメモリを必要としていなかったのでこれでよかったのですが、グラフィックス関係の処理を実装すると MB 単位のメモリが必要になるのでこの方法だとうまく動かなくなってきました。
かといって本格的なメモリ管理を実装するのも大変なので、 GetMemoryMap からもらったメモリマップから使えそうな大きさのメモリブロックを見つけてきて分配するように変更しました。
この変更によって実行時に確保するメモリ領域は EFI アプリケーション領域と完全に別の領域から割り当てられるようになったので、ポインタの値が直接見える場所では今までと大きく異なる値が表示されるようになります。

Window Managerの実装

まだちゃんとした Window までは実装できてませんが、今まで描画系の関数はすべて画面に直接描画していたのを「デスクトップウィンドウ」に描画するように変更しました。
マウスカーソルも独立したウィンドウに描画するように変更したので、マウスの移動で画面が崩れなくなりました!

また、今までコンソールのスクロールは直接画面を読み込んでコピーしていたので実機で動かすととても遅かったですが、スクロール処理と画面描画が完全に分離されたのでスクロールが早くなっています。

f:id:neriring16:20181111211210p:plain

だいぶ動くようになってきました。
次は複数のウィンドウの重ね合わせ描画とかですかね?