Mercurial > hg > Game > Atoc
annotate kernel/convert @ 0:42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 08 Sep 2009 13:44:18 +0900 |
parents | |
children |
rev | line source |
---|---|
0
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1 #!/usr/bin/php |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2 <?php |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3 $import_file_name = $argv[1]; |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
4 $export_file_name = $argv[2]; |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
5 $export_file_base = basename($export_file_name); |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6 |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
7 |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 // raw バイナリを読み込んで 4 バイトごとに unsigned int 化 |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
9 $content = file_get_contents($import_file_name); |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
10 $unpacked = unpack('N*', $content); |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
11 foreach ($unpacked as $key => $val) |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
12 { |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
13 $unpacked[$key] = sprintf('0x%08X', $val); |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
14 } |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
15 |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
16 // 各データ準備 |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
17 $kernel_size = strlen($content); |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
18 $kernel_uints = $kernel_size / 4; |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
19 $kernel_items = implode(', ', $unpacked); |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
20 |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
21 // C 言語のヘッダファイルを書き出す |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
22 $fp = fopen($export_file_name, 'wb') or die("Can't open {$export_file_base}."); |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
23 |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
24 $content = <<<EOH |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
25 /* [{$export_file_base}] This file has automatically generated by kernel/convert. So don't edit me. */ |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
26 |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
27 #ifndef KERNEL_H |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
28 #define KERNEL_H |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
29 |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
30 |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
31 #define SPE_KERNEL_SIZE {$kernel_size} |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
32 #define SPE_KERNEL_INITIAL_PC 0x10 |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
33 #define SPE_KERNEL_PROC_CONTEXT_OFFSET 0x70 |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
34 //#define SPE_KERNEL_PROGRAM_OFFSET 0x30 |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
35 |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
36 uint32_t spe_kernel_raw[{$kernel_uints}] = { {$kernel_items} }; |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
37 |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
38 |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
39 #endif /*KERNEL_H*/ |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
40 |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
41 EOH; |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
42 |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
43 fwrite($fp, $content); |
42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
44 fclose($fp); |