Cache labels in a file
This commit is contained in:
24
disassem.pl
24
disassem.pl
@@ -56,6 +56,21 @@ $baseaddr = 0xff0000;
|
|||||||
%labels = {};
|
%labels = {};
|
||||||
$labelnum = 0;
|
$labelnum = 0;
|
||||||
|
|
||||||
|
if (open LABELS, "<input.labels") {
|
||||||
|
while (<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;
|
$output = 0;
|
||||||
|
|
||||||
%io = (
|
%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
|
sub disassemble
|
||||||
{
|
{
|
||||||
my ($start) = @_;
|
my ($start) = @_;
|
||||||
|
|||||||
Reference in New Issue
Block a user