gombeのブログ

マイコンの電子工作系PIC32/KiCad/C/C++/3D/

Native-C やること(やるとは言っていない)

またこのネタですが、以前から気がついてたのですが、システム関数をコールするときにブロッキングな関数(例えばgetchar)だと動作を割り込ませることが難しいことが分かっています。

回避としてはノンブロッキングな関数のみとし、その他を静的ライブラリとしてリンキングするのが良さそうです。ただユーザーエリアが少なくなってしまうのでそのあたりの関係上ブレークチェック(MachiKania方式)も合わせて持っておくといいかもしれません。

 

そのほかの実装項目もたくさんあります。

## float周りの実装

math, printfの対応など 現在はまだ四則演算しかできないし、表示もできません。FPUないから遅いけど、なんんちゃってfpuのエミュレーションでもいいなと考えてるところ。

CP1動かそうとして例外発生>アセンブリで書いたエミュレーションコードでエミュレートし、その後復帰>OK何もなかった。いいね?

ハードウェアでFP対応してると高速ですが、対応してなくても実行は可能です。いつか実装するかも?

 

## ファイルIOの改善

jsonパーサーを用意してセーブやロードを容易にする。 構造体は実装済です。なのでバイナリレベルのロードはできるのですが、テキストで扱えるようにしたいです。エディタで中身見れれば随分と楽ですので。

 

## exampleの追加

ゲームばっかりでなく、浮動小数点数など生かした3Dエンジンを組み込んだり、でもやっぱり容量が足りなそうだからcrossコンパイルかハイブリッドになりそう。

ちなみにクロスコンパイルだと容量は最大1/10くらい小さくなります。このシステムもぎゅうぎゅうに詰めてこのサイズですから。グラフィックモードだとかなりきついですね。

 

## asのバグ修正

なんか最適化レベル上げた時にバグる現象を直さんと。どこでバグってるのかもまだわかってません。 最適化レベルで挙動が変わる系のやつほんと嫌い。