fedora42の環境で動作する6809エミュレータの中で動作する GAMEインタプリタで実行したプログラムと GAME-CCでコンパイルした同じプログラムの動作比較です。 すべて同じ6809エミュレータ上での動作、実機のSBC6809などだと更に速度は落ちます。 最初はインタプリタでの実行 エミュレータには、ウェイトの掛からない実行状態での動作です。 次は、エミュレータにdebugオプションを付けた状態での コンパイルオブジェクトの実行動作です。 debugオプションを付ける状態だと、インタプリタで実行しているのに近い エミュレータのトレース機能が一部噛んでくるので速度が落ちます。引き換えに好きなタイミングで簡易debugerに入って、レジスタ、メモリの確認やステップトレースを掛けることも出来ます。残念ながら、メモリの書換えや指定アドレスからの実行コマンドがないので自由な作業ができるdebugerとは言えませんが、6809のメモリを消費すること無く必要最低限の動きを追うことは出来ます。 最後がdebugオプションを外した、エミュレータでの全力動作です。 画面の右にCPUの動作クロック、その下にCPU占有率、通信帯域、メモリ、HDDアクセスのグラフを出しているのだが、エミュとは言えtelnetでローカル通信をしてるので全力で端末とのやり取りをすると通信帯域を消費しているのが判る。
GAME_CCの作者の「ず」さんのリクエストに答えて、先方のブログに回答したのですが 単に省略されただけで、「ず」さんに伝わっていればよいのですが うまく表示されて無いようなので こちらにも codegen.cファイルの 関数 void epilogue(){ 内の for(int i=1; i<odl_n+1; i++){ if(odl[i].opt==0){ //if(ofl[i].opt==0){ continue; } for(int j=0; j<odl[i].n; j++){ printf("V_%s\tRMB\t2\t; do loop pseudo array\n",odl[i].label[j]); } } -------------------------------------------------------------------------------- optimize.cファイルの 関数 void optimize_do_loop(){ 内の if(node_u->kind==ND_SETVAR && strcmp(node_u->str,odl[n].var)==0){ // 制御変数への代入がある odl[n].op...