Hatena::ブログ(Diary)

Aoisomeのファミコンエミュレータをいまさらだけど作ってみたけどやっぱりPCエンジンのエミュレータを作ってみる日記 このページをアンテナに追加 RSSフィード

2009-05-06

かゆいところに手が届かない - Javaの砂場の上で もがき続ける -

| 19:23 | かゆいところに手が届かない - Javaの砂場の上で もがき続ける -を含むブックマーク かゆいところに手が届かない - Javaの砂場の上で もがき続ける -のブックマークコメント

Javagoto文が無い理由を理解できない。

gotoがあると、スパゲッティーを山盛りにする奴がいるからっていうのが、goto文を無くした理由として語られるところだと思います。

C言語にはgotoがありますけど、それでめちゃくちゃなプログラムを書いて問題になってる場合ってそんなに多かったんでしょうか。

トランスレータを作ってると、どうしてもgotoが欲しくなります。

それ以外にも、gotoが必要となる場面ってあると思うんですよね。

Javaって、こういうかゆいところに手が届かない部分って多い感じです。

例えばですけど、昔のFORTRANで書かれたソースを、Javaに直して使いたいなんていう需要は結構ありそうな気がするんですよね。

昔のFORTRANだとGOTOがバンバン使われてたので、それをJavaに直そうと思ったら、フローを考えて人力でやるしか無くなっちゃうんじゃないかと。

Javaにもgotoがあれば、そういう昔のソースを機械的に変換することも可能になりそうなものです。

あとは、ステートマシンの状態遷移図から、機械的にソースコードを生成しようと思ったら、ifとgotoにしちゃうのが楽だと思うんですよね。


Javaバイトコードにはgoto命令があるので、直接的にバイトコードを生成すれば、なんとかなるんですけどねー。

ちょっとしんどいですよねえ。

Javaバイトコードを生成するためのライブラリが、いくつかあるのでそういうのを使えばちょっとは楽できそうですね。

ファミコンの6502バイナリから、Javaトランスレートする場合、gotoがあればかなり高速化できそうなんですよ。

Javaバイトコードアセンブリ言語表現にトランスレートするっていう手も考えられますね。

Jasminっていうのが良さそうです。

http://www.hakkaku.net/articles/20090302-399

hidehide 2009/05/14 10:29 始めまして。ニコニコ動画でエミュレータ動画を拝見させて頂きました。
このエミュレータは音はどうやって出しているのでしょうか?
あとソースって公開されていないのでしょうか・・・?

aoisomeaoisome 2009/05/15 01:05 観て頂いてありがとうございます。
音ですが、サウンド部分のプログラムは私は全く組んでいません。
http://www.geocities.jp/nullpoy700/wsx/src-archives
サウンドの部分についてはこちらのサイトで公開されているソースコードを使わせて頂きました。
ソースは正直、自分以外の方に見せられるような体裁になってないです。。。
もうちょい完成度を上げたらソースだけなら公開するかもです。
もしかしてエミュレータ作者の方ですか?

hidehide 2009/05/15 12:13 お返事ありがとう御座います。私は作者ではありませんが、
某巨大掲示板の、携帯エミュレータ開発のトピックで動画が話題になっていたので、
コメントさせて頂きました。

掲示板では複数のエミュ作者さんがソースを公開して、
色んなエミュを組み合わせで作っていて、
こちらのソースも公開されたらすごい成果になるのではないかと
話題になっていました。

商用利用とかを考えていらっしゃるなら、しょうがないですが、
オープンソースになったらエミュレータ作者さん達も盛り上がると思うので
期待しています!

aoisomeaoisome 2009/05/17 21:41 そうだったんですか−!
でも、期待するほどのものでは無いですよ。
動画では、良い部分しか見せてないので、良さそうに見えるだけです。
実際は、携帯で動かすまでの手順が複雑で面倒です。
現状だと、ソフトによっては動作が遅い場合もあります。
商用利用を一瞬考えたことがありましたが、色々と問題が多いので、今はそのつもりは無いです。
あまり期待しないで待ってもらえれば、そのうちソースコードを整理して公開すると思いますので気長に待っててくださいね。