Sim's blog

電子工作はじめてみました

ICFP2007 (16) トレースRNAのエンコード

2007-09-01 23:04:33 | ICFPプログラミングコンテスト
ICFP2007 (15) Fuun Security Featuresの続きです

ICFP 2007関連が増えてきたのでカテゴリーを新設しました。

8/28に関数の最初でCから始まるユニークな無効RNAを出力していることに気づきました。関連する話は以前載せたpage 2181889 (help-undocumented-rna)にも書いてあります。



このトレース用RNAのエンコードが分かりました。RNAなので全部で7文字、先頭はCに固定です。残りの6文字はCを0、Iを1、Pを2とした3進数になっています。関数はアドレス順に通し番号がついています。以下のようになっています。
0ca6fa 00127e CCCCCCC(0) endo-left-arm
0cb990 000876 CICCCCC(1) cow-right-horn
0cc21e 00ae91 CPCCCCC(2) contest-2005
0d70c7 0021ce CCICCCC(3) smoke
0d92ad 000596 CIICCCC(4) colorDuckBrown
・・・
6f9e01 000ba3 CCPICCI(258) sky-day-bodies

途中で番号が飛んでいることがあります。原因は暗号化されていたり壊れているときか、データのときです。欠番は9個ありました。実際は番号はついていませんが前後の関係から決めてかっこの中に記しました。
0da3a7 000b34 (6)   cow-spot-middle-ecc    (データ?)
0e5d10 007e2d (10)  help-beautiful-numbers (暗号化)
20742f 0006e0 (25)  sunflower              (データ?)
213563 0080f4 (28)  vmu-code               (暗号化)
2bc2cb 00c0eb (80)  help-activating-genes  (暗号化?)
42ccf3 006ed8 (119) help-error-correcting-codes (暗号化)
4aa77d 00145c (144) cow-tail               (暗号化?)
5706a4 001365 (185) caravan                (暗号化?)
61181e 001962 (218) duolc                  (データ?)

gene tableのintegrity checkでfailと表示されるものでもちゃんと番号がついているものもあります。cloud(212), cow-spot-middle(5), help-virus(219), motherDuck(82), sun(24), surfaceTransform(240)です。これらは暗号化されていなくて、先頭は壊れていなくて、途中から壊れているものと思われます。

gene tableに載っていない関数も3つありました。gene tableをアドレスでソースすると隙間が空いていて、関数番号もついていて、最後にchecksumもついています。
453945 000338 CCCCPIC(135)  startup() ???
58ccac 00131f CPCCIPC(191)  drawInt() ???
58faf2 00018a CPICIPC(194)  colorYellow() ???

この表のサイズはchecksumの分も含まれているので実際の関数のサイズは24を引いた値になります。一番上のものは一番最初に実行される関数です。次はprintGeneTableでページ番号を書いています。最後もprintGeneTable内で使われています。charColorCallBackに設定しているので色関係です。impdocに載っていてgene tableには載っていないcolorYellowだと思われます。

最新の画像もっと見る

コメントを投稿