So-net無料ブログ作成
English Version

独自言語 picle compiler on PIC24FJ [PIC]

 PIC24FJ64GA002用の picle コンパイラを公開します。^^
 操作性も含めて picle インタープリタ版とほぼ互換性があります。但し、実行速度は約76倍となっていて互換性がありません w

 まだ最適化のアイディアはあるのですが、最適化についてはきりがないので現段階のものを初版として公開します。
 今後使ってみて必要であれば機能拡張していきたいと思います(現時点で1点拡張予定はありますが・・)

 言語仕様は
独自言語 picle(pico instruction set compact and lightweight expression)

 回路等も含めた使い方は
独自言語 picle on PIC24FJ

を参照してください。

 インタープリタ版との主な相違点は
  • ソース保存用フラッシュメモリ
    0xA800 - 0xFFFF となります。
  • exit()対応
    組込み処理として exit() を追加しました。
  • run コマンド
    run の後にスペースを入力して起動するとコンパイルコードのアドレス範囲を表示します(隠しコマンド的に埋め込んだ)
  • src コマンド
    「src」のみ(アドレスパラメータ無し)の入力の場合、開始アドレスが初期値(0x1800)に設定されます。
  • Input_()処理
     インタープリタ版では入力文字列を数式評価処理し、計算式の入力を可能にしていましたが、今回のコンパイラ版では直値入力のみにしました。
  • proc/funcの前方参照不可 ★2016/04/05 追記
     コンパイラ版ではproc/funcの前方参照(ソース後方のproc/funcのコール)不可。
    ★2016/04/16 追記 プロトタイプ宣言機能の追加により前方参照可能になった。
  • 実行速度
    実行速度が速くなっています。

 今回はスクラッチでインタープリタを作成しその後コンパイラ化しましたが、結果として効率的なやり方だったのではないかと思います。(当然 LLVM等のツールを使う場合等、やり方に大きく依存するでしょうが)
 セルフコンパイラ化したことでGAME言語+アセンブリ言語で制御した マトリックスLED制御 等も picle単独で簡単に対応できるはずです。
 実行速度が上がったので、Timer_ のディクリメント間隔を 10ms から 1ms に変更した方が良いかとも思いましたが、picleでは配列アクセスを使って PIC のレジスタを簡単に設定でき必要に応じて timer1 の周期を picle ソース内で変更すればいいだけなのでそのままにしました。


 ダウンロードは下記からできます。商用目的以外であれば自由に使用可能です。

picle_compiler_v007
picle_compiler_v006 (旧バージョン)

★追記 2017/11/25 Ver 0.07
 「独自言語 picle のコンパイラ化(その13)」に記載した機能追加(asm_対応)
★追記 2017/05/26 ver 0.06
 「独自言語 picle のコンパイラ化(その12)」に記載したタイマー処理実装機能追加
★追記 2017/04/02 ver 0.05b
 次の問題対処。Modulo_が参照できない問題、連続したuseでエラーになる問題
★追記 2017/04/01 ver 0.05a
 ver 0.05の不安定部分を解消^^; 前verもDL可能にしておきます。
★追記 2017/03/30 ver 005
 「独自言語 picle のコンパイラ化(その11)」に記載した use 機能を実装。
★追記 2016/04/23 ver 004
 実行前にグローバル変数をゼロクリアするようにした。
★追記 2016/04/16 ver 003
 「 独自言語 picle のコンパイラ化(その8) 」 に記載した更新内容(プロトタイプ宣言、break 追加等)でアップデート
★追記 2016/04/09 ver 002
 「 独自言語 picle のコンパイラ化(その6) 」に記載した内容でアップデート

[TOP] [ 前へ ] 連載記事 [ 次へ ]
nice!(0)  コメント(1)  トラックバック(10) 
共通テーマ:趣味・カルチャー

nice! 0

コメント 1

skyriver

 次の問題を解消した0.05bをリリースしました。
・組み込み変数 Modulo_が参照できない
・useステートメントを連続した場合、エラーになる。
by skyriver (2017-04-02 21:21) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 10