プログラミング言語 ASMI のアイディア
プログラミング言語 ASMI の目標
- ASKAの上位互換言語であり、OSECPUの機能を最大限に使える言語を目指す。
- ASKAのプログラムは当然そのままコンパイルできるようになる予定。
- シンプルさよりもC言語を意識した構文により、既存の開発者が安心して移行できる環境。
- コンパイル時のパフォーマンスより、ASMIの開発では良心的なソースコードの記述を心がける。
- 今後ASKAでサポートされるであろう機能をASMIにも実装できるようにする。
- あくまで計画案なので、今のところは何ら確実なことは言えません。
検討中の仕様
- ASMIは、OSECPUや第三世代OSASKともっとも密接な言語になることを目指しています。
- 私の趣味ではなく、OSASKのため、と割り切って考えているので、少しでも以下の仕様に違和感をお持ちの方はコメント欄で指摘してください。
if構文
OSECPUでの条件比較(CND)は下位一ビットのみの比較です。これはFALSEのみを特別視しない平等な仕様だと思いますが、C言語との互換性がない(if(--i){}みたいなトリッキーなコードを書くと問題になる)ので、デフォルトではASMIは条件比較の前にCMPNE0命令を入れて、下位一ビットだけの比較でなく、C言語と同様に0でなければtrueになるようにします。しかし、if文の式の前に'@'演算子を入れると、このCMPNE命令を省略するので、下位一ビットのみの比較となります。
二項演算子
- 演算の際にprefix2f_0を立てたいときは、演算子の前に'@'演算子を置きます。また、ASMIでは、式中で結果bitを変更する機能は設けません。その代わり、代入文で代入先の型に合わせてbitが設定されます。意図的に計算精度を落としたい場合は、新しい変数を宣言して、そこに代入する必要があります。
その他
予約済みの識別子
- asmi
- Asmi
- case
- char
- class
- exit
- final
- for
- if
- int
- let
- private
- protected
- public
- return
- short
- signed
- struct
- switch
- ttwilb
- unsigned
- var
- virtual
- void
- while
rem
- 楽しみにしています。 -- K 2014-06-21 (土) 07:19:43
- ありがとうございます。できれば、なんとか夏までには成果を出したいと思います。 -- ttwilb 2014-06-21 (土) 14:32:36
- @演算子は面白そう。あえてC言語に準拠せずにASKAっぽく書くこともできるんですね。 -- K 2014-06-23 (月) 17:42:53