mirror of
https://github.com/pmret/papermario.git
synced 2025-12-25 01:02:26 -05:00
more goods
This commit is contained in:
45
tools/asm_sizes.py
Executable file
45
tools/asm_sizes.py
Executable file
@@ -0,0 +1,45 @@
|
||||
import glob
|
||||
import os
|
||||
import re
|
||||
|
||||
sizes = {}
|
||||
|
||||
def calc_insns(f_path):
|
||||
ret = 0
|
||||
with open(f_path) as f:
|
||||
f_lines = f.readlines()
|
||||
for line in f_lines:
|
||||
if line.startswith("/* "):
|
||||
ret += 1
|
||||
return ret
|
||||
|
||||
def do_dir(root, dir):
|
||||
max = 0
|
||||
min = None
|
||||
total = 0
|
||||
|
||||
files = glob.glob(os.path.join(root, dir) + "/*.s")
|
||||
|
||||
for f in files:
|
||||
amt = calc_insns(f)
|
||||
if amt > max:
|
||||
max = amt
|
||||
if min is None or amt < min:
|
||||
min = amt
|
||||
total += amt
|
||||
|
||||
avg = 0 if len(files) == 0 else total / len(files)
|
||||
|
||||
sizes[dir] = ((min, max, total, avg))
|
||||
|
||||
|
||||
script_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
asm_dir = script_dir + "/../asm/nonmatchings"
|
||||
|
||||
for root, dirs, files in os.walk(asm_dir):
|
||||
for asm_dir in dirs:
|
||||
if "/os" not in root:
|
||||
do_dir(root, asm_dir)
|
||||
|
||||
for thing in sorted(sizes.keys(), key=lambda x: sizes[x][3]):
|
||||
print(thing.ljust(25) + str(sizes[thing][3]))
|
||||
Reference in New Issue
Block a user