i16@寓

にゃ~ん

7月9日(水)のつぶやき その1

2014年07月10日 05時57分51秒 | Weblog

『Twitterまとめ投稿 2014/07/09』あなたを幸せにします。林愛一郎です。愛ち..|i16.blog.so-net.ne.jp/2014-07-09


ぼくの今日の運勢です 恋愛運 ★★☆☆☆ 金運 ★★★★☆ 健康運 ★★★★★ 仕事運 ★★★★☆ 自身に関するあらぬ噂が独り歩きしトンデモナイことに。変な噂は早めに潰しておこう。
 ラッキーアイテム 『お財布』→uranaitter.com


i8080エミュレータを今度はCで書いてみてるけど、演算するときのフラグの設定が物凄く煩雑な処理になりますねえ。アセンブラなら機械語の1命令で演算とフラグ設定が出来ちゃうのにCの範囲内だとカナリ煩雑。だいぶ工夫しても超遅そう。


i8080エミュレータを今度はCで書いてて巨大switchブロックにしたら、コンパイル出来なかったww。んー。テキトーに分割してみるかなあ。 pic.twitter.com/NDEV2mkLTh


inrとaddとadc以外の算術論理演算ではdaaが続くことはないとしてハーフキャリーフラグはゼロになっちゃうとか、わりとあっさり割り切ったC版エミュレータです。ただし算術演算の後のパリティフラグはZ80のオーバフローフラグとの識別に使われることが多いので有効にしています。


アセンブラ版はi8086のフラグレジスタをそのまま使ってるので、ハーフキャリーもi8080と同じになるので、C版とアセンブラ版とで違っちゃいました。i8080の場合はアセンブラで書かれたソフトが多いのでちょっとdaaなしというわけに行かず、daaアリでハーフキャリーもアリ。


んーしかし巨大switchブロックがメモリ溢れでコンパイルできないのに対応しなくちゃというのは、アルゴリズムとしては本質的でない部分で手間がかかっちゃうなあ。


exdebもddebもソースコード表示ができないんじゃん。。。。MapファイルにはCソースコードの行番号と番地の対応が出せてるんだからソースコード表示も付けといて欲しかった。てゆーかDOS版のMSとBorlandの開発ツールあれこれ凄い値段で買ったのにみんな捨てちゃったんだよ―。


i8080エミュレーター、いや今度はCで書いてi8086のフラグレジスタのビットの並びは利用してないからエミュレーターではなくてi8080シミュレーターだな、、は、DAA命令が面倒で苦労してたけど、ようやくcpudiagというプログラムが通るようになった。。。。


Cで書いた方のi8080シミュレーターは、演算に使わない主にハーフキャリーフラグの立ち方が実機と全然違っちゃうので、cpu exerciserの結果はどれも違っちゃうみたいだ。まあでもトレースダンプしてフラグの動きとかを見てみようと思う。アセンブラ版はmovは8085と一致だし。


inr r/dcr rはハーフキャリー立たない。。。。


こんな本が部屋から出てきた。MS-DOS 2.11の内部の解析フローチャート解説。 pic.twitter.com/KGPl8Idh9Q


主にハーフキャリーフラグの立ち方が違うからCRCチェックは実機と合わないけど、CPUDIAGは通るし、実際のプログラムは動いてるみたいなので、Cバージョンのエミュレータも出来たかなー。パリティフラグの演算が実直にやってるのでテーブル式にして高速化するとかの改良は考えられるけど。


7/10より、相模鉄道二俣川駅で向谷実のオリジナル列車接近メロディが使用されます。 毎年「旭ジャズまつり」にあわせ 旭区内の二俣川駅や鶴ケ峰駅などに導入されるものです。 8月中旬までの期間限定となっていますので是非現地でお聴きください! #mmclub

林愛一郎Aiichiro HAYASHIさんがリツイート | RT

iPhoneのカメラアプリで写真をシェアするのに、「次へ」をタップするときにバウンドしちゃうと、同じ位置に「投稿」が出るのをタップしたことになって、テキスト無しのまんま投稿されちゃう。されちゃった。むー。


i8080とZ80あるいはさらにはμPD8080Aでフラグの立方の違う部分については、パリティ/オーバフローの違いでZ80を判別して振り分けるというのはそれぞれのチップでドキュメントされた動きだし商用ソフトでも使用されてるので対応。商用ソフトにない仕様上未定義の動作は無視(^^;


まあ使ってるうちに不便が発生したら対応すればいいね。つまり対応してるとそのぶん処理が煩雑になってプログラムがシンプル&エレガントじゃなくなってっちゃう。ビミョーに遅くなるのはまあホストマシンたいてい速いんですが―。でもC版はパリティ計算のせいだか、CPU Exerciser遅い。


i8080なソフトなら掛け算するのにシフトと加算でやるわけだし、割り算するのにシフトと比較と引き算でやるわけだし、一度に8ビットずつチマチマ加減するわけだしってことで、クロックの速さに比例するほどは速くならないので、エミュレータを高速化したくなるのでした。アセンブラ版は速い。


んー。x64なアセンブラで書いたらさらに速いかなあ。生アセンブラはいかがなものかってことでCのインラインで書こうとするとカナリ処理系依存みたいだけどなあ。そもそもLLVMというかClangはインラインアセンブラでアーキテクチャ依存アセンブラコードを書けるんだろうか。。。。


LLVMの本2冊買ったうち1冊しか読み終わってないから読みゃいいわけだけど、まあ読書がナカナカ進まない病。。。でもまあ本を転がしといたらパラパラ見るかな。


ぐわー。こんなモン手で打ち込んだのに、コンパイルしてもらえなかった。。。 pic.twitter.com/qg8Zu448Jc


iPhoneのカメラアプリからtwitterに投稿できない。何度もリトライちゅう。自動でリトライする設定とかしばらく後に再度試みる設定とかあってほしいんですが―。


どっから見てもconstant expressionなのになあ。。non-constantだとコンパイラ氏はノタマうのだった。。 pic.twitter.com/EOeFB3e4Bj


コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする