Mercurial > hg > Game > Atoc
view 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 |
line wrap: on
line source
#!/usr/bin/php <?php $import_file_name = $argv[1]; $export_file_name = $argv[2]; $export_file_base = basename($export_file_name); // raw バイナリを読み込んで 4 バイトごとに unsigned int 化 $content = file_get_contents($import_file_name); $unpacked = unpack('N*', $content); foreach ($unpacked as $key => $val) { $unpacked[$key] = sprintf('0x%08X', $val); } // 各データ準備 $kernel_size = strlen($content); $kernel_uints = $kernel_size / 4; $kernel_items = implode(', ', $unpacked); // C 言語のヘッダファイルを書き出す $fp = fopen($export_file_name, 'wb') or die("Can't open {$export_file_base}."); $content = <<<EOH /* [{$export_file_base}] This file has automatically generated by kernel/convert. So don't edit me. */ #ifndef KERNEL_H #define KERNEL_H #define SPE_KERNEL_SIZE {$kernel_size} #define SPE_KERNEL_INITIAL_PC 0x10 #define SPE_KERNEL_PROC_CONTEXT_OFFSET 0x70 //#define SPE_KERNEL_PROGRAM_OFFSET 0x30 uint32_t spe_kernel_raw[{$kernel_uints}] = { {$kernel_items} }; #endif /*KERNEL_H*/ EOH; fwrite($fp, $content); fclose($fp);