過去の投稿記事 new!
・【画像】漫画でわかる外国人参政権
・東京電力のHPで停電状態が確認できたり(サービス再開!)
・戦国時代 ~ 江戸時代の徳川家康が熱かった
・vaio のバッテリは寿命が短いような気がする
・話題の Western Digital 製 WD20EARS を購入した
・C01LC をビックカメラで買ってきた
・2025年には空中都市が現実化?!
・【動画】わかりやすい「宇宙ひも理論」
・今世紀には「富士山噴火」「東海連動地震」「首都圏直下型地震」か?
・滅びた町、南浜町が Googleストリートビューで見れる

【 amazon 送料無料キャンペーン 】

バックリンクはご自由にどうぞ!     http://mfsocket.blogspot.com/feeds/posts/default?alt=rss リンク集 / ログイン

2007/05/16
コンパイラとバーチャルマシン

 
最近、
 
ひぐらし や 獅子戦争 逆転裁判、さらに マンガ ときて、果ては 意味不明な検証
 
などばっかで過ごしすぎました。
 
 
こうしてみてると
 
「これでもか!」
 
というぐらい、のんびりしすぎてると思う( ´д`)
 
たぶん自分は幸せな人間なのかもしれないな。。ただのバカかもしれないけど。
 
 
 
ってことでそろそろ バーチャルマシン の開発を再開しないと、いつまでたっても次のステップにいけないので、
ボチボチと開始してます。
 
 
もうね、
実はうれしいぐらい順調だったりで for/whileループ  if/else  関数呼び出し / 変数の制御 までほとんど
問題なく動くようになりました。
 
バーチャルマシン上で動く【サンプルソース】はこんな感じ。
//////////////////////////////////////////////////
 
class Main{
      m_api;    // APIアクセス用
      m_var;    // テスト用
 
      run(){
           m_api = new SystemAPI();
 
           m_var = "ほげ " + 100 + " テスト";
 
           // メソッド呼び出し
           call( m_var );
 
 
           //  forループテスト
           for( var i=0 ; i<10 ; i++ )(
                m_api.Trace( "i: "+ i );    // Trace は System.out.println() で出力するメソッド
           }
 
           m_var = 0xFF;
 
           if( m_var==0 ){
                call( "0でーす" );
           }else{
                call( "ゼロ", "じゃないよ" );
           }
      }
 
      call( str ){
           m_api.Trace( str );
      }
 
      call( str, str2 ){
           m_api.Trace( str + str2 );
      }
}
 
//////////////////////////////////////////////////
 
いまは m_api と直接記述してるけど、基本的にマクロプログミングにする予定なので、
プログラマじゃない人でも、もっと直感的に書けるようになります
 
 
コンパイラに内蔵しているマクロはかなり強力なので、我ながらわくわくしちゃいます。
たぶん gcc にも引けを取らないかも??
 
専門用途で言うならば gcc のプリプロセッサを使うよりも便利なハズですからね。
 ( かと言って、まったく違うインターフェイスでは無いのが GOOD )
 
 
 
さて、ここで話は変わりますがエミュレーターって言葉はみなさご存知ですか?
 
たぶん、ここまで読んでくださったあなたはきっと知ってますね。
聞いたこと無い方は Google で検索してから下記の記事をご覧になったほうが良いかもしれません。
 
 
エミュレーターとコンパイラってどっちが難しい?
 
 
という意見をたまに見かけます。
これに関しては自分は、比較するものでは無いとも思ってしまうのですが。
 
 
双方とも、作る仕様によって難易度が大幅に違いますよね。
 
例えばエミュレーターならば ゲームボーイをエミュレートするのか、PS2 をエミュレートするのかでは
まったく違います。
 
コンパイラも同じで、ふぬけ仕様のコンパイラか、C++/Java 等を自分で実装するかは
まったく違います。
 
エミュレーターはグラフィックス、サウンド、はたまた通信など、幅も広かったりします。
 
 
思うにエミュとコンパイラの決定的な違いは、エミュはすでに存在する何かを再現するものだし、
コンパイラは基本的には新しいものを作り出すものなのです。
 
 
これってかなり違うと思うのですが、どうでしょう?
 
 
ただ、難しいという意味合いだけならば、きっと同じなのは間違いありませんね。
 
 
さて、自分もゲーム○ーイのエミュレーターぐらいから、時間を見つけて開発してみようかな。。
 
3年程前、某ソースを見た時は、理解不能かつ意味不明な16進テーブル定義 を見たら、
とても理解する気が無くなったのを、よーく覚えてます
 
仕様は知らなくても、こういうものだと思って定義すればきっと当時でも作れたかも。。
 
それは性格的にゆるさなかっのですな( ´д`)

0 コメント:

  • コメントには <b>, <strong>, <em>, <i>, <a> など一部の HTML タグを使用できます。