rvtl on Mac OS X (Tiger) 投稿者:河野 投稿日:2005/09/12(Mon) 20:48 No.468 | |
|
ってなわけで 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程度になるようです。いくつかsystem call がLinuxと異なるようで、brk,getdent,getcwd,umount,pivot あたりはifdefで切りました。他のもテストはしてないです。
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 とすると良いようです。 |
| Re: rvtl on Mac OS X (Tiger) 河野 - 2005/09/12(Mon) 22:37 No.469 | |
|
| Re: rvtl on Mac OS X (Tiger) jun - 2005/09/13(Tue) 23:15 No.472 | |
|
|
驚きました。 まさか、Linux以外のOSに移植される方がいらっしゃるとは!
MacOS Xは使ったことが無いのですが、ソースを拝見したところシステムコール周りは 結構似ているようですね。getcwd, umount, pivot_root あたりはシステムコールを 呼ぶだけの「おまけ」コマンドですから影響は少ないですね。getdentsはファイル名 補完に使っているので動作すると使い勝手は良くなる部分です。 Com_BRK(メモリ最終の変更)は 「li r0, sys_sbrk」への変更では問題がありますか?
Macは持っていないので試すことが出来ませんが、ソースを見ていてMacがちょっと 欲しくなりました。 |
| Re: rvtl on Mac OS X (Tiger) jun - 2005/09/14(Wed) 01:04 No.473 | |
|
|
ところで、getdents関連部分は、Linuxのファイルシステムの実装に依存しているため、 移植はかなり大変と思います。rvtlで一番時間がかかっている部分の1つです。 x86→ARM→PowerPCで毎回苦労しました。 |
| Re: rvtl on Mac OS X (Tiger) 河野 - 2005/10/01(Sat) 16:40 No.480 | |
|
|
LOADが動かないのを放っておいたんですが、sc で r4 が保存されないのと、sc の後、一命令が実行されないのをみつけました。sc の後はもしかするとシステムコール番号なのかな。これでLOADも動くようになりました。macro.pl の方でOS X用の変更は吸収していますが、元のソースにも少し変更があります。
https://www.ie.u-ryukyu.ac.jp/%7Ekono/pub/software/rvtl-macosx-1.2.tgz
sbrkは、これではだめでしょうね。最近のLinux/FreeBSDでも連続しないメモリが割り当てになるようだし。とりあえず256k確保みたいなので逃げてます。
getdents は動いてません。あとtermiosも、なんかずれているみたいですね。C呼び出しちゃった方がいいのかなぁ。 |
| Re: rvtl on Mac OS X (Tiger) 河野 - 2005/10/01(Sat) 17:13 No.481 | |
|
|
GAME80, GAME09を80年代に使ってました。GAME09で6809のアセンブラを書いて、それでマイクロマウスとかFLEX09を動かしてました。なので、ちょっと懐かしいですね。今だったらJIT baseにするとか思うけど、こういうアセンブラから書くのも悪くないですね。移植性に問題ありだけど。
GameBoy AdvanceがARMなのでそっちでも動かしてみたいと思ってます。完全な趣味でしかないけど。 |
| rvtl on GBA jun - 2005/10/02(Sun) 02:54 No.482 | |
|
|
私は GAME68, GAME09 でした。
GameBoy Advance も書き始めて、stdio.s の出力部分は作成したのですが、 入力インターフェイスが思いつかなくて中断したままです。
rvtlのARM版でも SMALL_VTLを define するとlinuxに依存した部分が、 かなり減ると思います(ARM版では SMALL_VTL で動作確認していません)。 また、vtllib.s はほとんどキー入力用なのでGBAでは不要です。
|
|