aboutsummaryrefslogtreecommitdiff
path: root/size.pl
diff options
context:
space:
mode:
Diffstat (limited to 'size.pl')
-rw-r--r--size.pl29
1 files changed, 17 insertions, 12 deletions
diff --git a/size.pl b/size.pl
index 1fc8b19..8391de7 100644
--- a/size.pl
+++ b/size.pl
@@ -1,26 +1,31 @@
#!/usr/bin/perl -w
# from src/atari.cfg:
-my $code_start = 0x2000;
my $stack_size = 0x0100;
+my $p20_start = 0x2000;
+my $p20_end = 0x3360;
# from memsetup.asm:
-my $ramtop = 0x8000;
+my $ramtop = 0xc000;
open MAP, "client.xex.map" or die $!;
while(<MAP>) {
- next unless /^BSS/;
- (undef, $bss_start, $bss_end, undef) = split /\s+/;
- $bss_start = hex $bss_start;
- $bss_end = hex $bss_end;
+ next unless /^[A-Z]+\s+[0-9A-F]{6} /;
+ ($name, $start, $end, $size) = split /\s+/;
+ $name = lc $name;
+ $start{$name} = hex $start;
+ $end{$name} = hex $end;
+ $size{$name} = hex $size;
}
close MAP;
-$free = ($ramtop - $stack_size) - $bss_end + 1;
-$code_size = $bss_start - $code_start;
-$bss_size = $bss_end - $bss_start + 1;
+$free_hi = ($ramtop - $stack_size) - $end{code} + 1;
+$code_size = $size{code};
+$p20_free = $p20_end - $end{bss} + 1;
+$p20_size = $end{bss} - $p20_start + 1;
-printf "===> code ends at \$%04x (%d, %.1fK)\n", ($bss_start - 1), $code_size, $code_size / 1024;
-printf "===> BSS ends at \$%04x (%d, %.1fK)\n", $bss_end, $bss_size, $bss_size / 1024;
printf "===> stack starts at \$%04x\n", $ramtop - $stack_size;
-printf "===> free code space \$%04x (%d, %.1fK)\n", $free, $free, $free / 1024;
+printf "===> code ends at \$%04x (size %d, %.1fK)\n", $end{code}, $code_size, $code_size / 1024;
+printf "===> data ends at \$%04x (size %d, %.1fK)\n", $end{bss}, $p20_size, $p20_size / 1024;
+printf "===> free code space \$%04x (%d, %.1fK)\n", $free_hi, $free_hi, $free_hi / 1024;
+printf "===> free data space \$%04x (%d, %.1fK)\n", $p20_free, $p20_free, $p20_free / 1024;