めのん@ひとりプログラミング同好会

このブログはすべてフィクションであり、実在の人物、団体とは一切関係ありません

ASP3で学ぶZig

おはようございます、めのんです!

週末はOpenSiv3D、昨日はPHP、そして今日はZigです。

ほとんど日替わりで違うことをやっていますが、私の仕事は大体そんな感じなんですよ。 複数の案件を並行してやっていますので、日によって違うことをやるのはもちろん、午前と午後で違うのも普通です。 これからプログラミングを学ぼうという方が私のマネをするときっと挫折しますので、最初はどれかに絞ってじっくりやることをお勧めします。

今回の話題はZigについてですが、C++の題材にOpenSiv3Dを取り上げたように、Zigの題材としてTOPPERS/ASP3カーネルを取り上げます。

ご存じない方のために簡単に説明しておくと、TOPPERS/ASP3カーネルというのは組込み向けOSであるμITRONをベースとしたオープンソースカーネルです。 もともとはCで実装されていたものですが、先日、開発者である高田先生自身の手によってZigに移植されたものが公開されました。

ソースコードを取得すると、ディレクトリ構成は次のようになっています。

f:id:elddiry:20200707085548p:plain

この中のkernelというディレクトリにカーネルのターゲットに依存しない部分のコードが入っています。 ターゲットに依存する部分のコードはtargetとarchに入っています。 targetにはペリフェラルも含めたボードに依存するコードが、archにはプロセッサアーキテクチャコンパイラに依存するコードが入っています。 Zig版にはARM用のコードが入っているようですので、その前提で話を進めていきます。

ほかにもディレクトリがありますが、ツールやライブラリに関するものです。 たとえばcfgは静的APIを処理するコンフィギュレータのコードが入っていますし、tecs_kernelにはTECSというコンポーネント機構のコードが入っています。 どちらもZigとは関係ないので直接は扱わないことにします。

今回の目的はあくまでもZigの学習です。 TOPPERS/ASP3カーネルそのものを読み解くというより、Zigというプログラミング言語の使い方の参考にすることが主ですので、その点はあらかじめお断りしておきます。

というわけで、今回はほんの触りだけになってしまいました。 次回(おそらく今日の2回目の投稿)からは、実際のコードを見ていくことにします。

それでは!!