Propeller始めました(12) TV出力ドライバーライブラリの作成
取りあえず、今までの試作を元に、日本語テキスト表示を行うドライバーライブラリを
作成しました。今回、初めてアセンブラを一部利用して本格的なドライバを作成してみました。
CPUコア的には3コア利用しています。
ドライバライブラリを使ったソースは下記の通りです。
お手軽に日本語表示出来ます(逆にそれしか出来なんだけど...)
spin言語がglue(のり)となって、部品を繋ぎ合わせてプログラミングが出来ます。
アセンブラ等のややこしいとろこは見えません。
実装においては、アセンブラにて高速化を行ったつもりですが、
やはりSDカード上のフォントを検索して表示しているため、その部分がボトルネックとなり
思ったほど高速化出来ませんでした。
また、アセンブラのコーディングにおいてはスタックが使えない点と
メモリーが全部レジスタのため、からだが痒くなるような落ち着かない気分での
作業となりました。
その点を含め、今回の実装でプロペラののアセンブラプログラミングの流儀の
いくつかを学ぶことが出来ました。
アセンブラ命令語は、分かり易く強力な命令があります。
下記の例のように通常の命令に修飾子をつけて機能を付加できます。
上記のand命令のお尻に wz、nr を付けて zフラグ(演算結果が0の場合はセット)の
セット指定、nr(演算結果を設定にない)を付けて、代入せずzフラグだけの
結果を取得することができます。
通常のmov(値のセット)にも if_z等を付けて、zフラグがセットされている場合に
実行する等の条件を付けることができます。
プロペラのアセンブラプログラミングでは積極的に自己プログラム変更を行うのが
流儀のようです。プログラムを積極的に書き替える命令があります。
上記のmovd :arg ,#f_x は ラベル:arg のrdlongのdstの内容を書き換えることが出来る
命令文です。add :arg,d0 も rdlongのdstを変更して読み込みデータの格納アドレスを
インクリメントしています。
メモリー制約が厳しい(1コアのメモリは2kバイト)のでこのようなテクニックを使うのでしょうね。
« Propeller始めました(11) アセンブラでLチカ | トップページ | Propeller始めました(13) ステッピングモーターの制御 »
「表示器制御関連」カテゴリの記事
- NeoPixel(WS2812B)の制御 その5(2024.09.15)
- Arduino用 美咲フォントライブラリを更新しました(2024.03.21)
- Raspberry Pi Pico(MicroPython)でLEDドットマトリックスを使ってみる(2024.03.14)
- Raspberry Pi Pico MicroPython用のマルチフォントライブラリ(2023.02.09)
- MicroPython(Raspberry Pi pico)で8x8ドットNeoPixcel文字表示(2023.02.08)
「Propeller」カテゴリの記事
- プロペラ2の評価ボード(2019.03.12)
- プロペラでVT100端末の実装(2018.07.25)
- Propeller始めました(22) ポータブルゲーム機の実装 7(2016.02.19)
- Propeller始めました(21) ポータブルゲーム機の実装 6(2016.02.17)
- SPI接続のカラー液晶モジュールの動作確認(2016.02.14)
« Propeller始めました(11) アセンブラでLチカ | トップページ | Propeller始めました(13) ステッピングモーターの制御 »
コメント