history

青木日記 RSS

<前の日 | この月 | 次の日>

2005-03-04

Apple I を自作してコンピュータの基礎を学ぶ本

http://hotwired.goo.ne.jp/news/technology/story/20050303303.html

だってさ。PDF のサンプルを読んでみると、 カバーする範囲は『CPUの創りかた』と似ているようだ。 しかし成果物が Apple I というのがいいなあ。

(13:35)

JavaScript

少なくともぼくにとっては JavaScript が言語としてどうかは問題ではありません。 (HTML only) と (HTML + JavaScript/Java/ActiveX) の差を問題にしています。

ちなみにこの日記にも JavaScript がひっついてきますが、それはオフにできるし、 オフにしても読むうえで問題がない部分だからどうでもいいんです。 でもサービスを受けるために JavaScript オンを強制されるのは嫌。

付け加えれば、 新しい技術は嫌いつつ吸収するというのがぼくのスタイルでもあります。 たぶん一年くらいしたら何食わぬ顔して Ajax 使ってるんじゃないかな。

でもインクリメンタルサーチだけは実装しません。意地で。

(13:46)

YARV 0.2

http://www.atdot.net/yarv/

出たらしい。objdir を分けると楽にコンパイルできそうである。

~/obj % mkdir ruby-yarv; cd ruby-yarv
~/obj/ruby-yarv % cp ../../src/ruby/eval.c .
~/obj/ruby-yarv % patch -p0 < ../../src/yarv-0.2.0/evalc.patch
~/obj/ruby-yarv % ../../src/ruby/configure --prefix=/usr/pkg/ruby-yarv --disable-install-doc && make && make test && sudo make install
~/obj/ruby-yarv % cd ..
~/obj % mkdir yarv-0.2.0; cd yarv-0.2.0
~/obj/yarv-0.2.0 % /usr/pkg/ruby-yarv/bin/ruby extconf.rb && make && sudo make install
gcc -fPIC -g -O2  -I. -I/usr/pkg/ruby-yarv/lib/ruby/1.9/i686-linux -I/usr/pkg/ruby-yarv/lib/ruby/1.9/i686-linux -I. -DDISPATCH_THREADED_CODE -DDISPATCH_DIRECT_THREADED_CODE -DOPT_BASIC_OPERATIONS -DOPT_REGEXP_MATCH -DOPT_INSNS_UNIFICATION -DOPT_STACK_CACHING -DINLINE_METHOD_CACHE -DHAVE_TYPE_ULONG  -c compile.c
In file included from compile.c:39:
optunifs.inc:126: parse error before `struct'
optunifs.inc:133: parse error before `for'
optunifs.inc:134: conflicting types for `iv'
optunifs.inc:130: previous declaration of `iv'
optunifs.inc:134: `insns' undeclared here (not in a function)
optunifs.inc:134: warning: data definition has no type or storage class
optunifs.inc:134: parse error before `}'
optunifs.inc:135: parse error before `->'
optunifs.inc:135: conflicting types for `rb_ary_concat'
/usr/pkg/ruby-yarv/lib/ruby/1.9/i686-linux/intern.h:58: previous declaration of `rb_ary_concat'
optunifs.inc:135: warning: data definition has no type or storage class
optunifs.inc: In function `insns_unification':
optunifs.inc:150: stray '\' in program
optunifs.inc:150: parse error before `;'
optunifs.inc:161: stray '\' in program
optunifs.inc:161: parse error before `!='
optunifs.inc:166: `unified' undeclared (first use in this function)
optunifs.inc:166: (Each undeclared identifier is reported only once
optunifs.inc:166: for each function it appears in.)
optunifs.inc:173: `insn' undeclared (first use in this function)
optunifs.inc: At top level:
optunifs.inc:176: parse error before `return'
make: *** [compile.o] Error 1

あれ? ……ああ、CR LF か。

~/obj/yarv-0.2.0 % for i (*.c *.h *.inc **/*.rb) { tounix $i > tmp; mv tmp $i }

で、make benchmark までは何事もなく行ってしまったので以下略。

YARV 0.2 (2) Alpha EV6

次、AlphaServer DS20E で試す。

環境

tunami:~/src/yarv-0.2.0 % uname -srm
OSF1 V5.1 alpha
 
tunami:~/src/yarv-0.2.0 % gcc --version
gcc (GCC) 3.4.3
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
tunami:~/src/yarv-0.2.0 % /usr/local/pkg/ruby-yarv/bin/ruby --version
ruby 1.9.0 (2005-03-03) [alphaev6-osf5.1b]
 
tunami:~/src/yarv-0.2.0 % grep CFLAGS Makefile
CFLAGS   = -mieee -O2 -mcpu=ev6

あっさりと動いたのでベンチマークとアセンブリ出力だけはっとこ。

i686-linux だとベンチマークは平均 5.08 倍速になっているが、 Alpha EV6 だと 2.26 倍になってしまった。 個人的には 2 倍になってりゃ十分だと思うんだが、 so_object で YARV のほうが遅くなっているのが気になる。 これが遅くなるということは、一般的なプログラムも遅くなる可能性があるからだ。

(18:03)

壊れていく

今度はラジカセが壊れた……しくしく

CVS レポジトリをバックアップしとこう。

(18:18)

本日のツッコミ(全1件) [ツッコミを入れる]
ささだ (2005-03-05 11:16)

ありがとうございます。so_object は GC の実行時間が支配的ですが、まだ GC のチューニング(mark する領域について)をしていません。

名前
メールアドレス

<前の日 | この月 | 次の日>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|09|10|
2009|07|
2010|09|

Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved. LIRS