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);