Sim's blog

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

ICFP2007 (3) 修理ガイド(1)

2007-08-15 21:51:28 | ICFPプログラミングコンテスト
ICFP2007 (2) 見つけた画像の続きです。

前回の修理ガイドのカタログに従ってページを見ていきます。

(page 1729 help_fuun_structure)


DNA自体は3つのエリアに別れていて、先頭のred zoneには現在実行しているコード片が置かれていて、red zoneに置かれるコード片はgreen zoneからコピーされてくることや、blue zoneが作業域として使われることなんかが書いてあります。blue zoneは実際はスタックになっています。

(page 8 help_encodings)


真理値はPとFとか色々書いてあります。負の数は1の補数じゃない?文字は9acidと書いてありますが、数値は最後にPがつくので実際は8bitです。ここまでに色々なフォントが出てきていますが、画像として表示しているのではなく、フォントテーブルと文字列といった形で表示しているみたいです。

self testをしたり、空が青くなるprefixではF→PやP→Fという書き換えをしていましたが、これは真を偽にしたりといった真理値の書き換えだったということです。

次のpage 23 Activating Genesは暗号化されているそうなので中身は見れませんでした。
(page 23 help_activating_genes)

(page 42 printGeneTable)


一番左の列がgreen zoneからのオフセットで、二番目の列が長さ、三番目の列が名前です。14pageのうちの1page目ということですが、他のページも見れるのでしょうか?試しにpage 43を見てみましたが駄目でした。

page 43の画像


green zoneの先頭にIFPICFPPCFFPPというマーカー(?)があることも分かります。検索してみると先頭から13615バイト目からの13バイトで見つかります。この値はマーカーとしては使えません。IFPICFPPCFFPPの先頭のIのあるところがgreen zoneの先頭番地だからです。

ダメージを受けたエントリー(damaged entry)という表示は、表示の上や下のエントリーがダメージを受けているという意味ではなくて、本来ならそこに表示すべき値がダメージを受けていて表示できないという意味です。

integrity checkはよく分かりません。一般的には壊れているかどうかハッシュ値とかで検査するという意味のはずです。

長さが短いのはグローバル変数っぽいです。int24とかint9とか書いてあります。int9は8bit、int24は23bit?

一番最初のAAA_geneTablePageNrは0x510から24バイトです。前回のダンプの範囲なので見てみます。
0004d0  CCCPCCCCCCCCPIFP
0004e0  CFFPIIIIIIIIIIII
0004f0  IIIIIIIIIIIPIFPF
000500  PIIIIIIIIPIFPFIP
000510  IIIIIIIIIIIIIIII
000520  IIIIIIIPCCCCCCCC

直前にIFPFIPマーカーがついていて、値が0になっています。前回あてずっぽうにマーカーでないかと思ったものは実際にマーカーとして使えそうです。名前からすると、ページ番号なので14ページの他のページが見れるかもしれません(後回し)。

(page 112 most_wanted)


イメージというか画像も貼れるんですね。原理的にはできることは分かりますがなんかすごいです。これはジョークでしょうか。一番下の外人さんは誰?

(page 10646 printCharSet)


page 8 encodingで触れられていた文字セットです。って、文字が全部四角になっています。昔なつかしいEBCDICを寝かせています。これを見てピーンとくるのはかなり年配の人ってこと? (分かったので年寄りかも・・・)

長くなってきたので続きます。

最新の画像もっと見る

コメントを投稿