CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

リンクエラー回避

ソースコードにprintf系の関数を使用して標準Cライブラリからリンクさせようとすると
 下請けの関数が参照できずにエラーになることはわかっていますが
 実際のエラーの吐出しはこんな感じです
 
イメージ 1
 
これらはメモリブロックの取得とか低水準のファイル入出力関数でOSのシステムコールを使えない以上仕方がありませんが、これらをダミーの関数で置き換えたsyscalls.cというモジュールを見つけてきました。
これをリンクすればsprintfのようなメモリへの整形出力関数が使えるようになります
 
また標準のsprintfがリンクされたことによって時刻変数を可読文字列に変換する
ctime()、asctime()、strftime()といった関数も使えます

イメージ 2

ただし標準のprintf系関数のオブジェクトは大きくこれだけの処理で60~70kバイトものサイズになってしまいました。
今まで組み込んでいたサブセットのprintf代替モジュールxprintfでは10~20kバイトだったのですが