comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:42f240cc4bc6
1 #!/usr/bin/php
2 <?php
3 $import_file_name = $argv[1];
4 $export_file_name = $argv[2];
5 $export_file_base = basename($export_file_name);
6
7
8 // raw バイナリを読み込んで 4 バイトごとに unsigned int 化
9 $content = file_get_contents($import_file_name);
10 $unpacked = unpack('N*', $content);
11 foreach ($unpacked as $key => $val)
12 {
13 $unpacked[$key] = sprintf('0x%08X', $val);
14 }
15
16 // 各データ準備
17 $kernel_size = strlen($content);
18 $kernel_uints = $kernel_size / 4;
19 $kernel_items = implode(', ', $unpacked);
20
21 // C 言語のヘッダファイルを書き出す
22 $fp = fopen($export_file_name, 'wb') or die("Can't open {$export_file_base}.");
23
24 $content = <<<EOH
25 /* [{$export_file_base}] This file has automatically generated by kernel/convert. So don't edit me. */
26
27 #ifndef KERNEL_H
28 #define KERNEL_H
29
30
31 #define SPE_KERNEL_SIZE {$kernel_size}
32 #define SPE_KERNEL_INITIAL_PC 0x10
33 #define SPE_KERNEL_PROC_CONTEXT_OFFSET 0x70
34 //#define SPE_KERNEL_PROGRAM_OFFSET 0x30
35
36 uint32_t spe_kernel_raw[{$kernel_uints}] = { {$kernel_items} };
37
38
39 #endif /*KERNEL_H*/
40
41 EOH;
42
43 fwrite($fp, $content);
44 fclose($fp);