6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

D言語Advent Calendar 2016

Day 12

D 言語で書かれた OS をいじっている

Posted at

ハック PowerNex

スウェーデンの兄ちゃんが目下開発中の OS がある。その名は PowerNex、もちろん D 言語製である。ユーザ空間のアプリケーションが書けるようになり、コマンドラインシェルを中心として、ちょっとしたデモが標準搭載されている。

OS があってコンソールがあるなら、D 言語くん AA を降臨させようとするのが人情というもの。Advent Calendar だけに。

Advent of D-man

ただコンソールに表示させるだけならば、ユーザ空間の Hello world プログラムを参考にすれば容易に可能だ。注意が必要なのは Phobos は移植されていないということだ。独自のユーティリティライブラリとシステムコールはそれなりに用意されているし、object.d もそれなりに移植されているようなので、ちょっとした遊びには困らない。

PowerNex でも D 言語くんが通り過ぎる

さて、D 言語くんを降臨させたら、動かしたくなるのが世の常だ。そこで、dl コマンドを移植することにした。

このためには ANSI エスケープコードをコンソールが解釈する必要があり、それはカーネル側に実装する必要があったので、下のページを参考に、パーサを書いて使うことにした。

例によって Phobos はないもの、カーネル自体がクラスを多用しているため、クラスをゴリゴリ使えるような object.d が最低限用意されているのが強い。配列や連想配列でうぉりゃーとしようとするとリンカに怒られたりするが。そんなこんなで、それなりのエスケープコードを使えるようになったコンソールのデモがこれだ。

これは最初期の状況で、今は各種エスケープコードに対応できるようにハックを続けている。GitHub に作業中のリポジトリがあるのである。この記事を書いている時点では D 言語くんプログラムをコミットしていないが。

普通の OS で動く普通の超高級な D 言語プログラムに飽きたときは、変な環境向けの処理を書くと新鮮な気持ちを D 言語くんが届けてくれる気がする。

どっちかっつーと、D 言語くん Advent Calendar 向きの記事になってしまった。

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?