#指定--non-decimal-data运行awk
BEGIN{
total_size = 0
}
{
rang_size = calc_size($1)
total_size = total_size + rang_size
printf("%s 0x%08x %s %s %s %s %s\n", $1, rang_size, $2, $3, $4, $5, $6)
}
END {
printf("total=0x%08x\n", total_size)
}
function calc_size(rang_txt) {
split(rang_txt, offset, "-", seps)
#printf("s=%s e=%s\n", offset[1], offset[2])
start = "0x"offset[1]
end = "0x"offset[2]
#printf("s=%s e=%s\n", start, end)
return end - start
}
注意地址十六进制数字过大可能溢出。数字小没问题