Parrotさわってみる
「Parrotってなあに?」ていうような人は、とりあえずささださんの手によるParrot 入門 - The Parrot Primerとか読むといいんじゃないかなと思います。
「動的言語向けに設計されてるレジスタベースな汎用VMだよー」とかそんな感じだと思いますきっと。
まずインストール
http://svn.perl.org/snapshots/parrot/ からparrot-latest.tar.gzをダウンロード。
% tar zxf parrot-latest.tar.gz % sudo mv parrot /usr/local
とりあえず/usr/local/parrotあたりに入れておくことにしてみました。
% cd /usr/local/parrot % perl Configure.pl ...(なんか色々やってる) % make ...(なんか色々) % make test ...(たくさん) Failed Test Stat Wstat Total Fail Failed List of Failed ------------------------------------------------------------------------------- t/codingstd/cppcomments.t 0 11 1 2 200.00% 1 t/op/gc.t 1 256 22 1 4.55% 4 (8 subtests UNEXPECTEDLY SUCCEEDED), 12 tests and 616 subtests skipped. Failed 2/351 test scripts, 99.43% okay. 2/7884 subtests failed, 99.97% okay. make: *** [test] エラー 255
うーん。なんか成功してないテストもあるみたい。だけど、だいたいできてるみたいなので不安ですがとりあえず飛ばして次行きましょう。よくわかんないし。
% cd ~/bin % ln -s /usr/local/parrot/parrot parrot % parrot parrot -[abcCEfgGhjprStvVwy.] [-d [FLAGS]] [-D [FLAGS]][-O [level]] [-o FILE] <file>
とりあえずparrotにリンクはっとく。これでとりあえず、parrotの環境構築できたつもり。
てきとうにPASMでなんか書いてみる。
PASMっていうのはParrotのアセンブリ言語のようなもの。
とりあえずハロワ。
% cat >hello.pasm print "Hello, World!\n" end % parrot hello.pasm Hello, World! % parrot -o hello.pbc hello.pasm # バイトコードにコンパイル % parrot hello.pbc # コンパイルしたバイトコードを実行 Hello, World! %
Parrot VMはJVMとかのスタックベースなVMと違って、レジスタベース。実際のCPUの命令セットに少し似ている、かも。
% cat >reg.pasm set I1, 100 set N1, 2.2 set S1, "hoge" print I1 print N1 print S1 print "\n" end % parrot reg.pasm 1002.200000hoge
ParrotのレジスタにはIレジスタ、Nレジスタ、Sレジスタ、Pレジスタの4種類があって、たぶんそれぞれ32個ある。
なんか腰が痛いので今日はここまで。ほぼなんもしてねーじゃん。