]> git.cryptolib.org Git - avr-crypto-lib.git/blobdiff - host/data2wiki.rb
fixing E-Mail-Address & Copyright
[avr-crypto-lib.git] / host / data2wiki.rb
index e1bc69953511c324a71c1e6415936d100141a1aa..7867e01886c7015a8c0e6aee31d48d7b3f5b2f02 100644 (file)
@@ -3,7 +3,7 @@
 
 =begin
     This file is part of the AVR-Crypto-Lib.
-    Copyright (C) 2009  Daniel Otte (daniel.otte@rub.de)
+    Copyright (C) 2006-2015 Daniel Otte (bg@nerilex.org)
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
    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 += "<br> \n" + name+': '+m[4]
-    sum += m[4].to_i
+    name = m[6]+'.o'
+    if modules.include?(name)
+      str += "<br> \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