rt0 - 極小サイズのLinux用Cランタイムライブラリ

Window 2

Linuxのi386 / x86_64アーキテクチャをサポートした極小サイズのCランタイムライブラリ「rt0」が公開されています。

同ランタイムは、87行のCソースコード、i386向けの2行のインラインアセンブラ、x86_64向けの6行のインラインアセンブラで構成されたとてもシンプルなもの。提供されている機能も、argc, argv, envp, __environ, _exitと、syscall0/1/2/3/4/5/6(引数の数が異なるシステムコールの呼び出し)に限定されていますが、そのおかげで生成されるバイナリサイズも極小サイズとなっています。

このライブラリを使って「Hello World!」を出力するプログラムは以下のようになります。

#include 

int main( int argc, char **argv, char **envp )
{
   syscall3( SYS_write, 1, ( long )( "Hello World!\n" ), 13 );

   return 0;
}

printfは実装されていないので、syscall3を使ってLinuxのシステムコール「SYS_write」を使って標準出力に「Hello World!」を出力しています。

同サイトにはその他のLinux用の小さなlibcへのリンクも集められています。自力でCランタイムを作成してみると、C言語に対する理解がより深まるかも。意識高い系の開発者の方はチャレンジしてみてはいかがでしょうか。

スポンサーリンク