Cell
新しいにゃのがでたっぽいですにゃ。新しいのはFC6で無線LANが使えるとかにゃんとか。*1でもにゃ〜、パーティションの区切りを早く変更できるようにゃにして欲しいにゃ〜。 10Gすくにゃいにょ。*2 *1:詳しくはまだみてにゃいのでにゃんともにゃ *2:ARMに…
昔にゃのは「SPU:ARM PPU:BUS」見たいにゃ感じで、命令フェッチとかにゃデータの書き込みとか読み込みとかにゃでPPU側に問い合わせていたのですにゃ。 でもにゃ、それだとSPUの処理にPPUにゃがついていけにゃくて遅いのですにゃ。*1でにゃ、RAMとか割り込み…
「カウントダウンの1カウントは本当にゃに2GHzにゃのかどうかを調べることにゃ*1」>未来の猫 「フラッシュからの読み込み部分をもうちょっと詳しく調べることにゃ」>未来の猫 *1:にゃんかとっても遅いような気がするのですにゃ
次にゃは読み込み関連にゃか〜、これは手ごわいですにゃね。 ふにゅ。なかなか画面と音関連に行ってくれにゃいにゃ〜。 まだまだ先にゃんかにゃ。
もうにゃれてきたにゃので、さくっとタイマ〜関連にゃのを実装ですにゃ。 にゅにゅ〜、慣れってこわいにゃ……。
ThumbのPOP命令でPCがロードされた場合の処理が間違ってたのを修正したですにゃ。ふみゅ〜、そろそろこのコード領域から抜け出してもいいころだとは思うんだけどにゃ〜。 次は、TIMERですかにゃ。そうですか……。
合成するためにゃにPCMとかにゃのデータを取ってこにゃくてはいけにゃいけどにゃ、果たしてDMAの転送が間に合ってくれるんだろうかにゃ〜。 PCMだと途中からデータとってこれるからまだいいんだけどにゃ、ADPCMだと途中からデータを読むのは難しいからにゃ〜…
再生部分にゃの大体にゃところが出来て、一応うごいてるっぽいにゃ。 あとにゃは、中身*1を実装かにゃ〜。結構単純にゃつくりで、いわゆる一つのSPU*2みたいにゃ感じににゃ。 にゃんだか、本当にチップを作ってるみたいで面白いにゅ。でも、タイマーや割り込…
いつもにゃは、SDL_Mixerを使ってにゃってるにゃけど、今回にゃは直にゃに。 ダブルバッファにゃにして、SPUで直にバッファを書き換えですにゃ。
サウンド関連にゃも実験してみにゃいとにゃ〜、うまく音にゃるかにゃ〜。*1 *1:この実験が先かにゃ〜
前から組み込んでたにゃけど、にゃんちゃってGPU1号をにゃんとかしにゃいとにゃ。 いまにゃは、適当にゃにVRAMにゃの内容を処理して、適当にゃにフレームバッファにゃに書きこんでるだけにゃので。*1 *2 *1:といっても、まだ、コードの実行がVRAMを書き換え…
RTC関連にゃをがりがりとにゃ。RTCにゃとBUSにゃは1ビットで通信にゃってて、ビビビ〜って感じですにゃ。*1 INT1にゃの割り込みがどう動くかがちょっと不明で悩み中。 あとにゃは、通信でBUS->RTCにゃはMSBからおくってるぽいけど、逆にゃのRTC->BUSにゃはLS…
一般命令にゃのイミディエイトシフトにゃのシフタからにゃのキャリ〜フラグにゃが間違ってたにゃっぽいのですにゃ。 ふにゅ、変なアドレスにアクセスしていたにゃのがにゃおったっぽい。ARMのCPUにゃは難しいですにょ。
グルグル回る青い地球をみてるとにゃ、にゃごむにゃ〜。*1タンパク質にゃのが始まって2日しか経ってにゃいけど、MacやWindowsの処理能力を大幅に上回ってるみたいですにゃね。 にゃっぱりCellは早いんだにゃ〜。うちのジョナサンも見習って欲しいにゅ。 *1:…
上の間違いを修正したらにゃ、ちょっとだけ先に進むようにゃに。 今度はジョナサンを繋ぐFIFOですかにゃ……。まだまだ先はにゃがいにゃ〜。
Thumb命令にゃのSTRHにゃの一部にゃのアドレッシングにゃのが、まちがってたのですにゃ。 16bit書きこまにゃくちゃいけにゃいところを、8bitしかかきこんでにゃかったのですにゃ。コピペでつくってたからにゃ〜、にゃんだか他にもありそうだにゃ。
うにゃうにゃ〜って色々とがりがり。にゃっぱり、簡単にはうごかにゃいにゃ〜。 ジョナサン1号*1と2号*2にゃのやり取りを仲介する部分にゃところとかにゃを今日はやったですにゃ。暫くはあまり動きはにゃいかと……思いまするですにゃ。 *1:ARM9のSPE *2:ARM7…
ARM9とARM7の2匹のちっちゃいペンギン*1を動かしてみるにゃ。ちゃんと動いてるっぽいにゃ〜。 みゅみゅ〜、よしキミは今日からジョナサン1号と2号ですにゃ。*2 *1:SPU *2:注意:ジョナサンは すごい オットセイです。
にゅにゅ〜って例外処理を入れてみたですにゃ。 本当に例外で作ろうかにゃと思ったにゃけど、長い間割り込み禁止にするにゃは、にゃっぱりまずいかにゃ〜ってことで、普通に実装しましたですにゃ。
ありがとうございます。 情報をもとにゃにはかってみましたですにゃ。 FFFF0000 E3A00000 mov r0, #0 FFFF0004 E3A01064 mov r1, #100 FFFF0008 E0800001 loop: add r0, r0, r1 FFFF000C E2511001 subs r1, r1, #1 FFFF0010 1AFFFFFC bne loop FFFF0014 E120…
にゃてにゃて、どうにゃって調べるんだろうにゃ。 クロック毎にカウントアップされるレジスタとかにゃいんかにゃ?調べてみにゃいとにゃ。
久しぶりにゃに、ハンドアセンブルですにゃ。*1 ARMにゃのアセンブラの書式とかにゃは知らないにゃので、突っ込みにゃは禁止でお願いしますにゃ。 FFFF0000 E3A00000 mov r0, #0 FFFF0004 E3A01064 mov r1, #100 FFFF0008 E0800001 loop: add r0, r0, r1 FFF…
んみゅ〜。 どうにゃんだろう。 脳内の妄想だと、ARM1命令あたりに費やすSPEの命令にゃは50〜100命令ぐらいだと思うから 3.2GHzにゃで考えると64MHz〜32MHzぐらいにゃんだろうかにゃ。 命令フェッチとかライトバックとか遅そうにゃんで、もっと遅いかもにゃ…
命令を実行する部分にゃのテーブル*1を入れてみたのですにゃ。 ついでにTHUMB命令にゃもガリゴリと押し込んだですにゃ。デバック用にゃのコードif/defでガリガリ削れるようにゃにして、にゃんとかおさまったっぽいのですにゃ。*2ちにゃみに簡易デバック出力…
こんにゃ感じですにゃ〜。 // 1111 101. .... .... .... .... .... .... ; BLX label // . ; H // .... .... .... .... .... .... ; signed_immed_24 ccINT32 ccDevArmCPU::exeBLX_label() { //register ccUINT32 target_addr = m_nReg[15] + (((ccUINT32)((…
マップファイルにゃを見るとこの時点でにゃ約188KB使ってるのですにゃ。 あと68KBにゃのかにゃ。命令のデコード部分の高速化に、関数テーブル使いたいしにゃ。 一般的にゃにこの部分は12bitのテーブルを作って分岐させてるみたいにゃけど、これにゃると16KB…
コメントを頂いたもののコメントにゃには残ってにゃい?*1試してみましたですにゃ。 にゃんだか、警告がでるものの出来てるっぽいのですにゃ。*2コメントを書いて頂いたかたにゃに感謝ですにゃ。 //レジスタへの割り当てをつかうと13命令にゃに .align 3 .gl…
全部アセンブラでかければ、CPUにゃのレジスタを割り当ててにゃもっと効率よくできるんじゃにゃかろうかにゃ〜。 でも、そんにゃんにゃってられにゃいし、C/C++でこの変数は絶対コレに割り振るみたいにゃのできにゃいんだろうかにゃ。 もしくは、C/C++ではこ…
色々とソースコードにゃを変えてみにゃがら、どういうアセンブラが吐き出されるにゃかを見ること数十回。 にゃんだか判ったようにゃわからにゃいようにゃ。*1でも、以前に比べれば、少しはSPEに優しいコードを書けるようににゃったんではにゃいかと。 *1:ど…
こうかくとにゃ、条件分岐してしまうのですにゃ。 register ccUINT32 op = m_nOpecode.su32; if(op & 0x1000000) { m_nReg[14].vu32 = m_nNextInstructAddress.vu32; } こう書くとにゃ、分岐を使わずにゃにselb命令を使ってくれてspeに優しいコードににゃり…