twitterはじめました。

別件で余暇を投入していたソフトが一段落ついたので、開発に戻ってきました。盆の前に再度neon lightをサスペンドするかもしれませんが、しばらくは進めていくつもりです。

あと、http://twitter.com/yusuke_tabata でtwitterはじめました。neon lightのリリースとか技術的な説明は今までどおり、このblogに載せますが、微妙はつぶやきはtwitterだけにするかもしれません。


| | コメント (0) | トラックバック (0)

100th entry

100番目の記事ということで、neon lightの由来を説明します。

neon lightはSimon & Garfunkelの歌Sound of silenceの歌詞に出てくるものと、某ゲームのキャラであるneon light illusionの両方を見て付けました。幻想的な雰囲気で気に入ってるのですが、言語処理系の名前としては変なのでどうしようかと検討しているところです。

| | コメント (0) | トラックバック (0)

幅推論のタイミング

neon lightでは
def f(int ## x) {
return x + 1;
}
というような書き方でデータの幅を未確定な状態で宣言し、呼ぶ時の引数の幅で関数を実行することができます(実際のところテスト不足ですが)。

最初に関数が呼び出された時に引数のsignatureを作り、同じsignatureのバージョンがなければ構文木をコピーして、呼び出しの幅を書きこんでいくというやり方で実現しています。

| | コメント (0) | トラックバック (0)

nli-0.0.21

相変わらずテスト追加とバグ修正を重ねたnli-0.0.21をリリースしました。nliのページから取得してください。

ビット操作のバグを色々つぶしたので、そろそろ暗号化に使う計算をするようなコードを試していきたいと思います。

| | コメント (0) | トラックバック (0)

bit reduction演算子

Verilogにはbit reduction演算子があって、 &xや|xのように書くと全部のbitをandしたものやorしたものを計算することができます。これを付けてみようとしたんですが&はCのアドレス演算子と重複してしまうので考え込んでいます。

安易な解決策として、and_reduction(x)のような組み込み関数を作ってしまうことを検討しています。

| | コメント (0) | トラックバック (0)

call signatures

To supports polymorphic methods, neon light interpreter generates call signature for each method call. This allows multiple instances of functions with different arguments.

It is a bit tricky to code, so I will release new nli-0.0.21 when bugs around call signatures are fixed.

| | コメント (0) | トラックバック (0)

自動化テスト

コンパイラを作る時は大量のテストを作って、自動化して実行するのが普通なので、neon light compilerもそんな仕組みを作ってみました。

テストケースを記述したソースコード中にコメントとして予測される結果を書いておくというアリガチなものですが、それなりに上手く動いているようです。コンパイルエラーを発生させるべきテストケースとか将来書き出したら、大変なことになると思いますが、まあ、そん時に考えるということで…

| | コメント (0) | トラックバック (0)

名前どうしよう

neon lightなんて二語になってるのは言語処理系の名前としてよろしくなさそうなのと、某CPUの拡張機能の名前とかぶってるのとで、もっと良い名前を検討しています。

別に急ぎではないのですが、完成度が上がって、英語のblog書き始めるぐらいの時期には決めるつもりです。

| | コメント (0) | トラックバック (0)

nli-0.0.20

ちょっと山籠りして開発した成果で、配列のROM化を追加したnli-0.0.20をリリースしました。neon lightのページから取得してください。

int Kernel.a[] = {1,2,3,4};
def Kernel.main() {
  int x = a[0];
}
みたいなコードをコンパイルするとROM moduleを含んだverilogファイルが出力されます。まだ使い物にならないバグがあると思いますが、アプリケーションを書いてみてbrush upしていくつもりです。

| | コメント (0) | トラックバック (0)

配列

そろそろ実用的なコードを書いてみるかと思って書き始めたところ、配列を実装していなかったことに気付いて愕然としました。

インタプリタ側は動き始めたんで、Verilog出力の側を今からやろうかなって感じです。Verilog出力の時はROMとして出てくる場合でも、インタプリタ側は書き込みできるようにすると実用上面白そうです。

| | コメント (2) | トラックバック (0)

«C-to-Verilog