Last active
September 17, 2020 16:51
-
-
Save joaquinferrero/4bf0c58dd38cc43e839220bc0c7af6fb to your computer and use it in GitHub Desktop.
Show names and stats from .map file after asz80 assembling
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/perl -s | |
# | |
# Saca estadísticas a partir de un archivo .map | |
# generado por el asz80 | |
# | |
# Joaaquín Ferrero, 20200917 | |
# | |
use strict; | |
# argumentos | |
@ARGV or die "Uso $0 [-dec] <archivo .map>\n"; | |
our $dec; # parámetro: indica que se muestre en decimal | |
# constantes | |
my $WIDTH_FUNC = 32; | |
my $WIDTH_STAT = 20; | |
my $FORMATO = "%5s %5s %-${WIDTH_STAT}s %-${WIDTH_FUNC}s %s\n", | |
# variables | |
my ($inicio, $total); | |
my @entradas; | |
# proceso | |
while (<>) { # para todas las líneas | |
if (/^_CODE/../^Files/) { # si estamos entre las interesantes... | |
if (/^_CODE\s+\w/) { # si es la de información de área | |
($inicio, $total) = map {hex} (split)[1,2]; # extraemos información | |
} | |
next # saltamos | |
if not # si no es verdaderamente interesante | |
/^\s+([0-9A-F]{8})\s+(\w+)\s+(\w+)?/; # y extraemos información | |
push @entradas, [ hex($1), $2, $3 ]; # y la almacenamos para después | |
} | |
} | |
push @entradas, [ $inicio+$total-1, 'end' ]; # última dirección | |
# salida | |
printf $FORMATO, 'Value', 'Size', 'Graph', 'Global', 'Module'; | |
foreach my $i (0 .. @entradas-2) { | |
my $size = $entradas[$i+1][0]-$entradas[$i][0]; | |
printf $FORMATO, | |
pinta_formateado($entradas[$i][0]), | |
pinta_formateado($size), | |
'*' x int( $WIDTH_STAT * $size / $total), | |
$entradas[$i][1], | |
$entradas[$i][2] | |
; | |
} | |
printf $FORMATO, pinta_formateado($entradas[-1][0]), pinta_formateado($total), '', $entradas[-1][1], ''; | |
# subrutinas | |
sub pinta_formateado { | |
($dec ? $_[0] : sprintf "%X", $_[0]), | |
} | |
# end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Esta versión muestra las direcciones y tamaños en la misma base: o hexadecimal o decimal, según la presencia de -dec