⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 extractconstants.pl

📁 Linux内核源代码 为压缩文件 是<<Linux内核>>一书中的源代码
💻 PL
字号:
#!/usr/bin/perl$OBJDUMP=$ARGV[0];sub swapdata {	local ($num) = @_;	return substr($num, 6, 2).substr($num, 4, 2).substr ($num, 2, 2).substr ($num, 0, 2);}open (DATA, $OBJDUMP.' --full-contents --section=.data getconsdata.o | grep \'^ 00\' |') ||	die ('Cant objdump!');while (<DATA>) {	($addr, $data0, $data1, $data2, $data3) = split (' ');	$dat[hex($addr)] = hex(&swapdata($data0));	$dat[hex($addr)+4] = hex(&swapdata($data1));	$dat[hex($addr)+8] = hex(&swapdata($data2));	$dat[hex($addr)+12] = hex(&swapdata($data3));}close (DATA);open (DATA, $OBJDUMP.' --syms getconsdata.o |') || die ('Cant objdump!');while (<DATA>) {	/elf32/ && ( $elf = 1 );	/a.out/ && ( $aout = 1 );	next if ($aout && ! / 07 /);	next if ($elf && ! (/^0*0...... g/ && /.data/));	next if (!$aout && !$elf);	if ($aout) {		($addr, $flags, $sect, $a1, $a2, $a3, $name) = split (' ');		$nam[hex($addr)] = substr($name, 1);	}	if ($elf) {		chomp;		$addr = substr ($_, 0, index($_, " "));		$name = substr ($_, rindex($_, " ") + 1);		$nam[hex($addr)] = $name;	}}close (DATA);print "/*\n * *** This file is automatically generated from getconsdata.c.  Do not edit! ***\n */\n";for ($i = 0; $i < hex($addr)+4; $i += 4) {	print "#define $nam[$i] $dat[$i]\n";}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -