Top Banner
Synthesijer ででで FORTH ででででで 2015/8/2 でででででででで ででででで
28

Synthesijer で作るFORTH仮想マシン

Aug 17, 2015

Download

Software

ryos36
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Synthesijer で作るFORTH仮想マシン

Synthesijer で作る

FORTH 仮想マシン

2015/8/2有限会社シンビー鈴木量三朗

Page 2: Synthesijer で作るFORTH仮想マシン

発表がとりの前の前で光栄です

FORTH

Page 3: Synthesijer で作るFORTH仮想マシン

Who are you?

• わたし:すずきりょうざぶろう• Twitter: @ryos36• 生涯一プログラマ

Page 4: Synthesijer で作るFORTH仮想マシン

本も書きました

FPGA の仕事します

Page 5: Synthesijer で作るFORTH仮想マシン

今回の主役は

FORTH

Page 6: Synthesijer で作るFORTH仮想マシン

まずは Synthesijer の紹介

• Java でプログラム

でコンパイル

FPGA 上で動く!!

Page 7: Synthesijer で作るFORTH仮想マシン

私の CPU 作成履歴• 過去に パタヘネ の RISC にチャレンジ

あっさり挫折

Page 8: Synthesijer で作るFORTH仮想マシン

Synthesijer でなら CPU を作れる !!

• 今回作ったのは FORTH の VM(Virtual Machine)  ん?バーチャル? ( 細かいことは気にしない ) ん? FORTH って CPU だっけ? ( 細かいことは気にしない )

だって Java でプログラムだから

僕にもできた !!

Page 9: Synthesijer で作るFORTH仮想マシン

余談: Eclipse のプラグインを作ってみた

• Synthesijer すげー– 世の中に広めるべきだ (by わたし )

メニューをたしただけ、、、

要望があるなら公開します。(プラグインとしてあまりレベルは高くない)

Page 10: Synthesijer で作るFORTH仮想マシン

FORTH 入門• 逆ポーランド• スタック型• スレッデッドコード

今回移植したのは正確には RETRO 言語という FORTH 系の言語

LT だからキーワードだけね

Page 11: Synthesijer で作るFORTH仮想マシン

余談 : 逆ポーランドといえばこれ

Wikipedia より

HP-41C 逆ポーランド方式の電卓

1981 年当時 70,000 円超でした

Page 12: Synthesijer で作るFORTH仮想マシン

FORTH 入門 ~ その 2~

> 3> 5> +> putn8

3 3

5

8

8

RETRO では p ではなくて putn を使って表示。

Page 13: Synthesijer で作るFORTH仮想マシン

FORTH VM

• VM だからオペコードがある (30 個 )

Page 14: Synthesijer で作るFORTH仮想マシン

Java での実装

switch case による実装

Page 15: Synthesijer で作るFORTH仮想マシン

Stack は int の配列

Page 16: Synthesijer で作るFORTH仮想マシン

Synthesijer のための変更• VM 的にはほとんどなし !!• 入出力の変更有– UART ( サンプルを参考に実装 )– イメージの入出力 ( イメージは初期値で持

つ)

作業を始めて土日で(徹夜せずに)完成 !!実際に SP605 で動く !!

すいません。手抜きで AWK をつかってごにょごにょっとしてます。

Page 17: Synthesijer で作るFORTH仮想マシン

ここが便利 Synthesijer

Printf 的なデバッグが可能 !!

CUI も可能

Page 18: Synthesijer で作るFORTH仮想マシン

ここが便利 Synthesijer

ソフトで使われるデバッグ手法が可能

Printf 的なデバッグが可能 !!

Page 19: Synthesijer で作るFORTH仮想マシン

動いたぜ !!FORTH

結果がジミすぎてすいません。必要 RAM サイズはミニマムで 12KB (もっと絞れるかも)

Page 20: Synthesijer で作るFORTH仮想マシン
Page 21: Synthesijer で作るFORTH仮想マシン

FORTH 入門 ~ その 3~

• 断片的なコード (Threaded Code) : ( コロン ) ではじまり ; ( セミコロン ) で終わる

• 頭の中でコンパイルしている (= ハンドコンパイル的発想 )

Page 22: Synthesijer で作るFORTH仮想マシン

So What?

• で、 FPGA の中に FORTH が入って何がうれしいの?

Page 23: Synthesijer で作るFORTH仮想マシン

Synthesijer の使い方のコツ• Java であらかじめプログラムのバグをつ

ぶす• HDL 的な考えをしない

簡単すぎてM 子もびっく

Page 24: Synthesijer で作るFORTH仮想マシン

広がる妄想 with

• いろんな VM/CPU つくれるのでは?• ソフトからハードに移植できるのでは?• FORTH を極める

あなたが選ぶ Synthesijer との未来

Page 25: Synthesijer で作るFORTH仮想マシン

広がる妄想 with

• いろんな VM/CPU つくれるのでは?• ソフトからハードに移植できるのでは?• FORTH を極める

あなたが選ぶ Synthesijer との未来

• JavaScript• ruby/mruby• erlang

Page 26: Synthesijer で作るFORTH仮想マシン

広がる妄想 with

• いろんな VM/CPU つくれるのでは?• ソフトからハードに移植できるのでは?• FORTH を極める

あなたが選ぶ Synthesijer との未来

• ハードの分野と思われていなかったもの ? ( 早い者勝ちだ !!)– httpd– ファイルシステム– DB

Page 27: Synthesijer で作るFORTH仮想マシン

広がる妄想 with

• いろんな VM/CPU つくれるのでは?• ソフトからハードに移植できるのでは?• FORTH を極める

あなたが選ぶ Synthesijer との未来

May The FORTH Be With You

Page 28: Synthesijer で作るFORTH仮想マシン

ご清聴ありがとうございました

[ 量 ]