多重ポインタって簡単じゃね?

スポンサーサイト

[ --/--/-- --:-- ] スポンサー広告

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[タグ未指定] | TB(-) | CM(-)

多重ポインタって簡単じゃね?

[ 2009/01/01 18:47 ] 解析日記

なぜBSiでCLANNAD~AFTER(ryが2週間も休みなんだ?信じられない・・・
すんごい楽しみなんだが・・・

新年になるといつもwktkするんだがなぜだろう。
後、新年になるといつもテレビがつまらなくなるのはなぜだろう。

多重ポインタみてみたが意外と簡単そうだった。
続き

【CWC】
多重ポインタ
0x6aaaaaaa 0xvvvvvvvv
0x000t000n 0x0000zzzz
0xS000iiii 0xS000jjjj
....
0xS000ssss 0x00000000
aaaaaaa=ポインタアドレス、第1ベースアドレスがあるところ
t=最後に書き込むbit数、CWC参照
n=追跡する回数、ベースアドレスを読み込む回数
vvvvvvvv=書き込む値
S=オフセットの+/- 2でプラス、3でマイナス
iiii=第1ベースに+/-するオフセット
jjjj=第2ベースに+/-するオフセット
ssss=第(nn-1)ベースに+/-するオフセット
....
zzzz=最後+/-するオフセット(tに依存)
第1ベースアドレス=aaaaaaaにある値-0x8800000
第2ベースアドレス=第1ベースアドレス+/-iiiiにある値に-0x8800000
第3ベースアドレス=第2ベースアドレスから+/-jjjjにある値に-0x8800000
.....
最終書込アドレス=最後に来た第nベースアドレス-0x8800000+/-zzzzになる

多重ポインタは基準アドレスの管理しているアドレスにまたポインタの基準アドレスがあってそれを繰り返すときに使う。
意外と簡単なものだ。

0x6aaaaaaa 0xvvvvvvvv
つまりだなaaaaaaaがポインタの基準アドレスだろ
vvvvvvvvが書き込みたい値




0x000t000n 0x0000zzzz
tは基準アドレスの管理しているアドレスにまたポインタの基準アドレスがあってそれの最後に行き届いたときに書き込むbit数

zzzzは基準アドレスの管理しているアドレスにまたポインタの基準アドレスがあってそれの最後に行き届いたときのオフセット値

オフセット値とは
アドレスが0x0000だったとする
オフセプラス0x200だった場合0x0200になる



0xS000iiii 0xS000jjjj
S=オフセットの+/- 2でプラス、3でマイナス
iiii=第1ベースに+/-するオフセット
jjjj=第2ベースに+/-するオフセット

iiiiは基準アドレスの管理しているアドレスのオフセット値で
その先にポインタの基準アドレスのそのまた管理しているアドレスのオフセット値をjjjjに書き込む
よく分からない人用(オフセット)
0x60123452 0x00001111
0x00010001 0x000000A0
だった場合
まず基準アドレス0x123452の管理している変動アドレスは0x00034501だったら
オフセプラスなので0x00034501A0を足したら0x000345A1になります。
で、アドレス0x000345A1に値1111を書き込む




....
0xS000ssss 0x00000000

ssss=第(nn-1)ベースに+/-するオフセット
nn-1のベースにオフセをつける。
つまりssssは16bitだから
0x6aaaaaaa 0xvvvvvvvv
0x000t000n 0x0000zzzz
0xS000iiii 0xS000jjjj
....
0xS000ssss 0x00000000

これが永遠に続く
0x6aaaaaaa 0xvvvvvvvv
0x000t000n 0x0000zzzz
0xS000ssss 0x00000000


もうだめ・・・俺の説明力の無さに(ry
まあ、大体は分かったんじゃないか?

いや・・・まじで多重ポインタは簡単だから(慣れてくると・・・



以下コピペ略
CMFusionRR15TEST専用
多重ポインタ
0x6aaaaaaa 0xvvvvvvvv
0x000200nn 0x0000iiii
0x0000jjjj 0x0000kkkk
....
0x0000zzzz 0x00000000
aaaaaaa=ポインタアドレス、第1ベース
vvvvvvvv=書き込む値
nn=追跡する(ベース値を読み込む)回数
iiii=第1ベースに足すオフセット
jjjj=第2ベースに足すオフセット
kkkk=第3ベースに足すオフセット
....
zzzz最後に足すオフセット

第1ベースアドレス=aaaaaaaにある値-0x8800000
第2ベースアドレス=第1ベースアドレス+iiiiにある値に-0x8800000
第3ベースアドレス=第2ベースアドレスから+jjjjにある値に-0x8800000
....
最終書込アドレス=第nnベースアドレス+zzzzになる
#ポインタシリアルとコピーバイト併用が出来なくなる。RR16以降より廃止,CWCと同じ形式 --------------------------------------------------------
FREECHEAT080323版以降専用
多重ポインタ
0x6aaaaaaa 0x00000000
0x000u0000 0x0000iiii
0x60000000 0x00000000
0x000u0000 0x0000jjjj
0x60000000 0x00000000
0x000u0000 0x0000kkkk
....
0x60000000 0xvvvvvvvv
0x000t0001 0x0000zzzz
0x90000000 0x00000000 ←オプションを入れることが可能。
aaaaaaa=ポインタアドレス、第1ベース
t=書き込むbit数、CWC参照
vvvvvvvv=書き込む値
u=オフセットの+/- 6でプラス、7でマイナス
iiii=第1ベース+/-するオフセット
jjjj=第2ベース+/-するオフセット
kkkk=第3ベース+/-するオフセット
....
zzzz=最後+/-するオフセット(tに依存)

第1ベースアドレス=aaaaaaaにある値-0x8800000
第2ベースアドレス=第1ベースアドレス+/-iiiiにある値に-0x8800000
第3ベースアドレス=第2ベースアドレスから+/-jjjjにある値に-0x8800000
.....
最終書込アドレス=最後に来たベースアドレス+/-zzzzになる
シリアルやコピーバイトも追跡先で使用できる。
[タグ未指定] | TB(0) | CM(8)

  1. 16bitとかありますよね?
    その「bit」って何ですか?
  2. by: 清掃 * 2009/01/01 23:26 * URL [ 編集] | TOP↑


  3. つまり4桁の16進数と覚えたほうがいいですよ
  4. by: RUIN * 2009/01/02 00:20 * URL [ 編集] | TOP↑


  5. ちょっとミス;;
    bitは
    8bit,16bit,32bitがあって
    8bitは2桁,16bitは4桁,32bitは8桁と覚えたほうがいいかもしれません。
    全て16進数
  6. by: RUIN * 2009/01/02 00:24 * URL [ 編集] | TOP↑


  7. bitは2進数での0と1の数です,1byteは16進数での人間がかってに見やすくしたデータ単位でbitが本来のコンピュータが使う0と1の数です。
    10進数 255
    16進数 FF    1byte
    2進数 11111111 8bit
  8. by: 訪問者 * 2009/01/02 19:27 * URL [ 編集] | TOP↑


  9. ありがとうございます。
    16進数をもっと理解したほうがよさそうですね^^;
  10. by: 清掃 * 2009/01/02 22:34 * URL [ 編集] | TOP↑


  11. こんいちは、 根本的に馬鹿な質問をしますが
    多重ポインタと言うものを実行して
    なにかメリットはあるんですか?
    教えてください
  12. by: FLS NINJA * 2009/02/01 16:39 * URL [ 編集] | TOP↑


  13. 普段できないことができてしまいます。
    例えがあれば説明しやすいんですが、中々見本のコードがなくて;
  14. by: RUIN * 2009/02/01 17:30 * URL [ 編集] | TOP↑


  15. そうなんですか、、、、
    あと難しい質問しますが、
    ポインター化のやり方を、詳しく知ってますか?
    FreeCheatは、いれて、基準アドレスをしろうと
    したら △ボタンで結果がみれません、、、
    サーチしても、、、、 そこでCWCheatのポインター化
    をやろうと思いましたが、やりかたがさっぱり
    分からず、、、、
    今分かるのは  +0x08800000 をして、こんな感じ↓
    0x2136***** + 0x088(ry = 0x29B6**** なので
    この 0x09B6 を取って CWCheatで16bitでサーチ、、
    このぐらいです

    初心者でも、分かる説明をしてくだされませんか?
    psg0121@yahoo.co.jp
    よかったらメールでお願いします(長文すいません)
  16. by: FLS NINJA(psg0121) * 2009/02/04 14:28 * URL [ 編集] | TOP↑
















管理者にだけ表示を許可する


Page Top↑
▲ Page Top
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。