K.Sasada's Home Page

こめんとのついか

こめんとこめんと!

message

please set comment :).

_6(Thu)

というわけで、疲れ果てています。

京王線が止まっちゃって中央線周りで来たし。明日は大丈夫かなぁ。


ちょこっとだけ与えられた自己紹介のチャンスで、凄い先生方が沢山いてあがってしまって、全然、研究やその他のことについて言えなかった。しょぼす。超凹む。

なんというか、コミュニケーション能力が全然無くてアレです。凹む。


花見を企画する精神状態にないので、やるなら誰かヨロ。


やっとアセンブラの元を作った。

require 'pp'

iseq = YARVCore.parse(%q{
  i = 0
  while i<10
    i+=1
    p i
  end
  i * i
}, __FILE__, __LINE__)

# 命令列を配列に変換
data = iseq.to_simpledata
pp data

# 配列から命令列に変換
iseq2 = YARVCore::InstructionSequence.load_simpledata(data)

# 命令列を実行
p iseq2.eval

こんなプログラムで、

["YARVInstructionSimpledataFormat",
 1,
 1,
 1,
 nil,
 "<main>",
 "../yarv/test.rb",
 [],
 :toplevel,
 [],
 [:i],
 [],
 [[:putobject, 0],
  [:setlocal, 2],
  [:jump, :label_28],
  :label_6,
  [:getlocal, 2],
  [:putobject, 1],
  [:send, :+, 1, nil, 0, nil],
  [:setlocal, 2],
  [:putself],
  [:getlocal, 2],
  [:send, :p, 1, nil, 4, nil],
  [:pop],
  :label_28,
  [:getlocal, 2],
  [:putobject, 10],
  [:send, :<, 1, nil, 0, nil],
  [:branchif, :label_6],
  [:putnil],
  [:pop],
  [:getlocal, 2],
  [:getlocal, 2],
  [:send, :*, 1, nil, 0, nil],
  [:end]]]
1
2
3
4
5
6
7
8
9
10
100

こうなる。

まだ例外などには対応していない。

これで Scheme インタプリタが作れるね!

_きむら(Thu Apr 06 09:09:28 JST 2006)

 あ、昨日の京王線の事故の影響受けちゃったんですか。お疲れ様です。

_ささだ(Thu Apr 06 15:20:37 JST 2006)

 幸い、JR経由で遠回りだけど帰れました。


好きにコメントを編集してください。ただし、あまり他の人のコメントを書き換えることは感心しません。



back

tton 記述が使えます。YukiWikiな記述してりゃ問題ありません。

「行頭に#code」 と、「行頭に#end」 で挟むと、その間の行は pre で囲まれます。プログラムのソースを書くときに使ってください。

例:

#code

(なんかプログラム書く)

#end

リンクは

[[なまえ|http://www.example.org]]

とか

[[http://www.example.org]]

で貼れます。

$Date: 2003/04/28 10:27:51 $