Tuesday, 13 September 2005

rvtl on Mac OS X (Tiger) 続き



ってなわけで Mac OS X 上で PowerPC version を動かすことができました。付属のasが

 Apple Computer, Inc. version cctools-590.obj〜12, GNU assembler version 1.38

らしく、.macro/.ifdef が動かないので Perlでmacroを展開するプログラムを書いてgccでコンパイルしました。32kbyte程度になるようです。Tiny basic にしてはでかい。いくつかsystem call がLinuxと異なるようで、brk,getdent,getcwd,umount,pivot あたりはifdefで切りました。他のもテストはしてないです。bench mark だと4秒と出るが...

最後に(バス待ち中に)とったバグはこれ。 sys_read ですが、sc の直後に
 li r0, sys_read
 sc
 lwz r0, 0(r1) # pop r0
するのはPowerBookのCPUでは動作しないようです。lwzuは使わないようにして、
 li r0, sys_read
 sc
 lwz r3, 4(r1) # pop r3
 lwz r4, 8(r1) # pop r4
 lwz r5, 12(r1) # pop r5
 lwz r0, 0(r1) # pop r0
 addi r1, r1, 16 # restore r1
とすると良いようです。

 http://www.ie.u-ryukyu.ac.jp/%7Ekono/pub/software/rvtl-macosx.tgz

にバイナリとソースを一緒に置いてみました。

ifdefの処理と最小限のマクロのscriptで一日以内なら許す... CbC でインタプリタを書くってのもやってみたいのを思い出した。

向うのWWWにも書いたけど、こっちにも書いておこう。

No comments: