ぼくの今日の運勢です 恋愛運 ★★☆☆☆ 金運 ★★★★☆ 健康運 ★★★★★ 仕事運 ★★★★☆ 自身に関するあらぬ噂が独り歩きしトンデモナイことに。変な噂は早めに潰しておこう。 ラッキーアイテム 『お財布』→http://t.co/bFdBYz9AbZ
7/9 2:21
i8080エミュレータを今度はCで書いてみてるけど、演算するときのフラグの設定が物凄く煩雑な処理になりますねえ。アセンブラなら機械語の1命令で演算とフラグ設定が出来ちゃうのにCの範囲内だとカナリ煩雑。だいぶ工夫しても超遅そう。
7/9 5:58
i8080エミュレータを今度はCで書いてて巨大switchブロックにしたら、コンパイル出来なかったww。んー。テキトーに分割してみるかなあ。 http://t.co/NDEV2mkLTh
7/9 8:29
inrとaddとadc以外の算術論理演算ではdaaが続くことはないとしてハーフキャリーフラグはゼロになっちゃうとか、わりとあっさり割り切ったC版エミュレータです。ただし算術演算の後のパリティフラグはZ80のオーバフローフラグとの識別に使われることが多いので有効にしています。
7/9 8:50
アセンブラ版はi8086のフラグレジスタをそのまま使ってるので、ハーフキャリーもi8080と同じになるので、C版とアセンブラ版とで違っちゃいました。i8080の場合はアセンブラで書かれたソフトが多いのでちょっとdaaなしというわけに行かず、daaアリでハーフキャリーもアリ。
7/9 8:50
んーしかし巨大switchブロックがメモリ溢れでコンパイルできないのに対応しなくちゃというのは、アルゴリズムとしては本質的でない部分で手間がかかっちゃうなあ。
7/9 8:50
exdebもddebもソースコード表示ができないんじゃん。。。。MapファイルにはCソースコードの行番号と番地の対応が出せてるんだからソースコード表示も付けといて欲しかった。てゆーかDOS版のMSとBorlandの開発ツールあれこれ凄い値段で買ったのにみんな捨てちゃったんだよ―。
7/9 12:09
i8080エミュレーター、いや今度はCで書いてi8086のフラグレジスタのビットの並びは利用してないからエミュレーターではなくてi8080シミュレーターだな、、は、DAA命令が面倒で苦労してたけど、ようやくcpudiagというプログラムが通るようになった。。。。
7/9 16:13
Cで書いた方のi8080シミュレーターは、演算に使わない主にハーフキャリーフラグの立ち方が実機と全然違っちゃうので、cpu exerciserの結果はどれも違っちゃうみたいだ。まあでもトレースダンプしてフラグの動きとかを見てみようと思う。アセンブラ版はmovは8085と一致だし。
7/9 16:33
inr r/dcr rはハーフキャリー立たない。。。。
7/9 16:34
主にハーフキャリーフラグの立ち方が違うからCRCチェックは実機と合わないけど、CPUDIAGは通るし、実際のプログラムは動いてるみたいなので、Cバージョンのエミュレータも出来たかなー。パリティフラグの演算が実直にやってるのでテーブル式にして高速化するとかの改良は考えられるけど。
7/9 16:54
iPhoneのカメラアプリで写真をシェアするのに、「次へ」をタップするときにバウンドしちゃうと、同じ位置に「投稿」が出るのをタップしたことになって、テキスト無しのまんま投稿されちゃう。されちゃった。むー。
7/9 16:54
i8080とZ80あるいはさらにはμPD8080Aでフラグの立方の違う部分については、パリティ/オーバフローの違いでZ80を判別して振り分けるというのはそれぞれのチップでドキュメントされた動きだし商用ソフトでも使用されてるので対応。商用ソフトにない仕様上未定義の動作は無視(^^;
7/9 17:14
まあ使ってるうちに不便が発生したら対応すればいいね。つまり対応してるとそのぶん処理が煩雑になってプログラムがシンプル&エレガントじゃなくなってっちゃう。ビミョーに遅くなるのはまあホストマシンたいてい速いんですが―。でもC版はパリティ計算のせいだか、CPU Exerciser遅い。
7/9 17:14
i8080なソフトなら掛け算するのにシフトと加算でやるわけだし、割り算するのにシフトと比較と引き算でやるわけだし、一度に8ビットずつチマチマ加減するわけだしってことで、クロックの速さに比例するほどは速くならないので、エミュレータを高速化したくなるのでした。アセンブラ版は速い。
7/9 17:35
んー。x64なアセンブラで書いたらさらに速いかなあ。生アセンブラはいかがなものかってことでCのインラインで書こうとするとカナリ処理系依存みたいだけどなあ。そもそもLLVMというかClangはインラインアセンブラでアーキテクチャ依存アセンブラコードを書けるんだろうか。。。。
7/9 17:35
LLVMの本2冊買ったうち1冊しか読み終わってないから読みゃいいわけだけど、まあ読書がナカナカ進まない病。。。でもまあ本を転がしといたらパラパラ見るかな。
7/9 17:35
iPhoneのカメラアプリからtwitterに投稿できない。何度もリトライちゅう。自動でリトライする設定とかしばらく後に再度試みる設定とかあってほしいんですが―。
7/9 17:55
やっと送れた。。。。カメラアプリから投稿に失敗すると、しばらくかかりっきりにならないといけなくなっちゃうから凄い不便だ。カメラアプリじゃなくて何かリトライ遅延投稿専用のスプールしてくれるtwitter投稿アプリを探して使うべき?知らんし。写真がカメラロールに入ることも重要。
7/9 17:56
ぐ。dropboxでiPhoneの写真の同期をしてたら、容量がいっぱいになって来たらしい。。。有料コースにする気はないしなあ。ダウンロードして消せばいいのか。メンドクサイなあ。。。
7/9 18:16
i8080エミュレータはDOSの16bitモードではアセンブラ版を使って、x86なりx64なりではC版を使うことにすれば、DOS版でなくて32bitや64bitのgccやclangコンパイラならパリティの表もコンパイルできると期待しておこう。
7/9 18:16
写真を若干減らして、iPhoneのiOSアップデートちゅう、、、、、、
7/9 18:37
なんか時間掛かるなあ。iPhone 4Sだしねー。16GB機せまい。音楽とか楽器アプリとか入れてるから。。。。
7/9 18:37
プログレスバーが動き出した。時間掛かるねえ。まあ見てなくてもダイジョブか。。。
7/9 18:37
iPhone 4SのiOSアップデートが完了したので、今度はiPad 4のiOSアップデートに取り掛かってるところ。。。まずは同期中。
7/9 19:38
アセンブラ版は1命令実行する毎にintトラップしちゃうデバッグ版でも結構速いなあ。デバッグじゃない版はi8080のレジスタとしてi8086のレジスタを使っていて命令フェッチとi8080のメモリアクセス命令以外はメモリアクセスに行かないでグルグル回る仕掛けだからさらに速いですが―。
7/9 20:18
しかしi8086アセンブラで書いたi8080エミュレータをCで書きなおしたと言ってもDOS窓の16bitモードのプログラムでスモールモデルでfar*でTSR常駐している別プロセスのメモリを縦横無尽に読み書きしちゃうというCプログラムだから移植性はないよなあ。移植可能にする一過程?
7/9 20:44
>>もっと見る