K.Sasada's Home Page

こめんとのついか

こめんとこめんと!

message

please set comment :).

_7(Fri)

なんとなくはてなdiaryでも使ってみようかと思って ko1 で登録してみたら、もう取られていたので諦めた。残念。

yarvco なんてどうだろう。


require 'pp'
require '../yarv/rb/yasm'
yasm = YARVCore::Assembler.new
iseq = yasm.toplevel([:a, :b]){
  #
  # a = 10
  # b = 20
  # p(a+b)
  #
  putobject 10
  setlocal :a
  putobject 20
  setlocal :b
  putself
  getlocal :a
  getlocal :b
  send :+, 1
  call :p, 1
  leave
}
puts iseq.disasm
iseq.eval #=> 30

こんなのが書けるようにしてみた。

条件分岐とラベルはこんなふうに書く。

#
# def m3(a)   # abs
#   if a > 0
#     a
#   else
#     -a
#   end
# end
m3 = yasm.method(:m3, [:a]){
  getlocal :a
  putobject 0
  send :>, 1
  branch
  branchunless :label_else
  getlocal :a
  jump :label_end
_ :label_else
  getlocal :a
  send :+@, 0
_ :label_end
  leave
}

多分、興味持つ人はごく少数だと思うんだけど、これとても面白いんですよ。Ruby でインラインアセンブラが書けているわけですから。


朝、電車で座ってスラドを読んでいたら(家でロードしておいた)、隣に座った人が話しかけてきて、「同じページ見てますね」と言われた。


Parrot Maniacs を書いたのは、VM の楽しさを広めるためでもあったんだけれど、やっぱり食いついてくる人はおらんなぁ。うーむ。


さて、日記が色々腐っている。この原因は、ruby を 1.6 から 1.8 にしたことなんではないかと思う。

もうちょっと言うと REXML の仕様が変わってるっぽい。というか、仕様を見ないで勘で作ったので、もともと間違っていたっぽい。

どうしようかな。


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



back

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

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

例:

#code

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

#end

リンクは

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

とか

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

で貼れます。

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