ppcsimの使い方

目次

  1. ppcsimについて
  2. インストール
  3. 実行方法
  4. 実行例
  5. 実行時間について
  6. 制限事項
  7. その他
  8. 履歴

ppcsimについて

ppcsimはPowerPCの命令コードをソフトウェア的に解釈して動作をシミュレートする ソフトウェアシミュレータです。Power-Xプロジェクトの先行実験検証用(本当は単なる お勉強用)に作成しました。本当は本物PPCが使えれば良いのですが、Power-Xプロジェクト 自体が現実のものになるのかどうか不明であるため、労力はかかるけど設備投資は不要な ソフトシミュレータで、GNUツールのレベル検証であるかとか、性能見積もりであるだとか を行ってみようとTANEが勝手に行った実験の産物の一つです。
2000/5/13に、首謀者である SYSTEMAXのKOJIさんの所から、 バーチャルPowerXが出ました!!グラフィックが使用できるのがppcsimとの大きな 違いです!しかも動作が速いです!必要悪だと思ってWinマシンをゲットして 使うしかっ!!

インストール

パスの通ったディレクトリにppcsim.xとppcsim.hlpをコピーします。

実行方法

コマンドシェル型のユーザインターフェースとなっています。

    > ppcsim
と実行する事でプロンプトが表示され、コマンド受け付け状態となります。実際には、 アセンブル&リンクされた実行ファイルをシミュレータ内のメモリにロードし、 g(GO)コマンドでプログラムの先頭から実行を開始します。
昔のPC-8801やPC-9801のN8x-BASICで、MONコマンドを使用した事のある方なら、そのまん まのイメージを思い浮かべられるのではないかと思います(^^;

実際には、非常に実行時間がかかるので、インタラクティブに操作する事は稀であると 思います。また、プログラムローダが貧弱であるため、初期化操作の為に多くのコマンド を入力する必要があり、非常に面倒です。そのため、一連の操作をバッチファイルの様に 列記して実行する事が可能となっています。
    > ppcsim foo.ppc
の様に実行する事でファイル内(この場合はfoo.ppc)に書かれたコマンド列を順に実行 します。全てのコマンドを実行し終えるとppcsimの実行は終了します。

実行例

サンプルを実行してみます。サンプルアーカイブ(ppgccsmpl.lzh)を展開し、

  ppcsim count.ppc
と実行すると、count.binの命令列がシミュレーター上で実行されます。
Cライブラリの都合で、stdinというファイルが存在していないと 実行結果がうまく保存されません。
実際に自前のプログラムをコンパイルする場合は、 クロスコンパイラの使い方も同時に参照して、 思考錯誤してみて下さい(ぉぃぉぃ;;;;

実行時間について

X68kXVI+Xellent30で実行した場合の平均的な実行時間は、だいたい

X68k上で1秒 ~= シミュレータ上で2時間

といった感じです(^^;
参考までに、今までに実験したライブラリやモジュールのシミュレータ実行時間は
IJG djpeg(JPEGデコーダ) :  2時間(256*256*24bitのデータ)
IJG djpeg -gif          : 12時間(256*256*24bitのデータ)
zlib minigzip -d        :  2時間(18KBくらいでほとんど圧縮の効いていないと思われるデータ)
libpng-1.0.3 load_png
  (自前ロードルーチン)  : 5時間(256*256*24bitのデータ)
libpng-1.0.6 load_png
  (自前ロードルーチン)  :3.5時間(256*256*24bitのデータ)
という感じになっています。いずれも、2時間 ~= 1秒換算でX68kのモジュールは実行終了します。

制限事項

完全にPowerPCの動作をシミュレートできている訳ではありません。

  1. 未実装だとまずいかも知れない未実装命令がある。
  2. 実装されていても結果が正しくない場合がある。
  3. 例外モデルのシミュレートができてない。
  4. キャッシュモデルのシミュレートができていない。
  5. MMUモデルのシミュレートができていない。
  6. IO操作ができない。
  7. メモリサイズはシミュレータを動作させるマシンの物理メモリサイズに依存する。
  8. システムコールが埋め込みになっている。

その他

かなり説明が雑で判りにくい(つーか判らない)所もあると思いますが、実験風味ただよって いるという所で勘弁願えたらなと思います(ダメ?(^^;)。暇をみて詳しい解説を加えていき たいですね。
プログラムとは全然関係無いのですが、emulationは競争するという意味がある様ですが、 最新のプロセッサに実行速度の点でかなうハズがありませんので、ppcsimはエミュレータ ではなくシミュレータという事で。

履歴

  2000/03/27 : 「実行時間について」を追加した。
  2000/03/27 : 履歴を追加した。


TOP PREV