X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;f=host%2Fdata2wiki.rb;h=d5c74444f2b9f72e201245f58d82dcc06fd46022;hb=c26c0ae7602db9d3b2d7baf6ae6fc9639539ad02;hp=e1bc69953511c324a71c1e6415936d100141a1aa;hpb=b022a029def51d63f330c12bf07156db294c8958;p=avr-crypto-lib.git diff --git a/host/data2wiki.rb b/host/data2wiki.rb index e1bc699..d5c7444 100644 --- a/host/data2wiki.rb +++ b/host/data2wiki.rb @@ -34,21 +34,38 @@ 6801 32 0 6833 1ab1 bin/bmw_c/bmw_small.o =end -def get_size_string(fsize) +def get_size_string(impl, algo) + fmap = File.open('algo_implementation/'+impl+'.algos', 'r') + fsize = File.open('size_log/'+impl+'.size', 'r') + modules = nil + while l=fmap.gets + if m=l.match(/^([^:]*):(.*)$/) + if m[1] == algo + modules = m[2].split(/[\s]+/) + end + end + end + if modules==nil + puts("ERROR: no module list found for #{impl}/#{algo} !") + return nil + end + fmap.close() str = '' sum = 0 - lb = fsize.readline() - loop do - return sum.to_s() + str if fsize.eof() - lb = fsize.readline() + lb = fsize.gets() + while lb = fsize.gets() m = lb.match(/[\s]*([\w]*)[\s]*([\w]*)[\s]*([\w]*)[\s]*([\w]*)[\s]*([\w]*)[\s]*([\w_\/-]*)/) - name = m[6].match(/\/([^\/]*)$/)[1] - str += "
\n" + name+': '+m[4] - sum += m[4].to_i + name = m[6]+'.o' + if modules.include?(name) + str += "
\n" + name+': '+m[4] + sum += m[4].to_i + end end + fsize.close() + return sum end -def process_hashfunction(fin, name, fsize) +def process_hashfunction(fin, name, impl) lb = fin.readline() m = lb.match(/hashsize \(bits\):[\s]*([\d]*)/) if(!m) @@ -56,27 +73,47 @@ def process_hashfunction(fin, name, fsize) end hashsize = m[1].to_i() lb = fin.readline() - m = lb.match(/ctxsize \(bytes\):[\s]*([\d]*)/) + m = lb.match(/ctxsize \(bytes\):[\s]*([\d]+)/) ctxsize = m[1].to_i() lb = fin.readline() - m = lb.match(/blocksize \(bits\):[\s]*([\d]*)/) + m = lb.match(/blocksize \(bits\):[\s]*([\d]+)/) blocksize = m[1].to_i() lb = fin.readline() - m = lb.match(/init \(cycles\):[\s]*([\d]*)/) + m = lb.match(/init \(cycles\):[\s]*([\d]+)/) inittime = m[1].to_i() lb = fin.readline() - m = lb.match(/nextBlock \(cycles\):[\s]*([\d]*)/) + m = lb.match(/nextBlock \(cycles\):[\s]*([\d]+)/) nextblocktime = m[1].to_i() lb = fin.readline() - m = lb.match(/lastBlock \(cycles\):[\s]*([\d]*)/) + m = lb.match(/lastBlock \(cycles\):[\s]*([\d]+)/) lastblocktime = m[1].to_i() lb = fin.readline() - m = lb.match(/ctx2hash \(cycles\):[\s]*([\d]*)/) + m = lb.match(/ctx2hash \(cycles\):[\s]*([\d]+)/) convtime = m[1].to_i() - size = get_size_string(fsize) - printf("| %20s || %3s || %3s \n| %s \n| %4d || || %4d || %4d ||" + - " %6d || %6d || %7.2f || %6d || || || \n|-\n" , - name, $lang, $lang, size, ctxsize, hashsize, blocksize, + begin + lb = fin.gets() + end until lb==nil || m = lb.match(/init \(bytes\):[\s]*([\d]*)/) + if lb + initstack = m[1].to_i() + lb = fin.readline() + m = lb.match(/nextBlock \(bytes\):[\s]*([\d]*)/) + nextblockstack = m[1].to_i() + lb = fin.readline() + m = lb.match(/lastBlock \(bytes\):[\s]*([\d]*)/) + lastblockstack = m[1].to_i() + lb = fin.readline() + m = lb.match(/ctx2hash \(bytes\):[\s]*([\d]*)/) + convstack = m[1].to_i() + s1 = (initstack>nextblockstack)?initstack:nextblockstack + s2 = (lastblockstack>convstack)?lastblockstack:convstack + stack = (s1>s2)?s1:s2 + else + stack = 0 + end + size = get_size_string(impl, name) + printf("| %20s || %6s || %3s || %6d || %7d || %7d || %7d || %7d ||" + + " %7d || %7d || %9.2f || %7d || || || \n|-\n" , + name, $variant, $lang, size, ctxsize, stack, hashsize, blocksize, inittime, nextblocktime, nextblocktime.to_f/(blocksize/8), lastblocktime+convtime) end @@ -88,11 +125,16 @@ $handlers["hashfunction"] = 1 #process_hashfunction def process_file(fname) fin = File.open(fname, "r") + impl = fname.match(/([^.]*).txt$/)[1] $lang = "asm" - $lang = "C" if fname.match(/_c.txt$/) - algo = fname.match(/.([^.]*).txt$/)[1] - size_filename = 'size_log/'+algo+'.size' - fsize = File.open(size_filename, "r") + $lang = "C" if impl.match(/^[^_]*_[cC]/) + $variant = $lang + if m=impl.match(/_([^_]*)$/) + $variant = m[1] + end + if $variant == 'c' + $variant = 'C' + end begin begin if fin.eof() @@ -106,7 +148,8 @@ def process_file(fname) type = m[1] if $handlers[type] != 0 # handlers[type](fin, name) - process_hashfunction(fin, name, fsize) + # puts "DBG: process "fname+'-'+name+'-'+impl + process_hashfunction(fin, name, impl) else printf("ERROR: unsupported type: %s !\n", type) end