From 123d2dc9236ce8fa7277ae952a5e1f1fc0068678 Mon Sep 17 00:00:00 2001 From: Gavan Fantom Date: Sun, 13 Feb 2011 14:54:15 +0000 Subject: [PATCH] Cache labels in a file --- disassem.pl | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/disassem.pl b/disassem.pl index 3766c9d..525dca1 100755 --- a/disassem.pl +++ b/disassem.pl @@ -56,6 +56,21 @@ $baseaddr = 0xff0000; %labels = {}; $labelnum = 0; +if (open LABELS, ") { + chomp; + if (($name, $addr) = /(.*): (.*)/) { + $addr = hex $addr; + $labels{$addr} = $name; + if ($name =~ /^L(\d+)$/) { + $labelnum = $1 + 1 if ($labelnum >= $1); + } + } + } +} + +close LABELS; + $output = 0; %io = ( @@ -192,6 +207,15 @@ for my $pass (0..1) { } } +open LABELS, ">input.labels" or die $!; + +foreach my $addr (sort keys %labels) { + printf LABELS "%s: %.6x\n", $labels{$addr}, $addr + if defined($labels{$addr}); +} + +close LABELS; + sub disassemble { my ($start) = @_;