Track branches with 24 bit absolute addresses too.
Also, fix bug in generating duplicate labels after reading in labels file
This commit is contained in:
@@ -63,7 +63,7 @@ if (open LABELS, "<input.labels") {
|
|||||||
$addr = hex $addr;
|
$addr = hex $addr;
|
||||||
$labels{$addr} = $name;
|
$labels{$addr} = $name;
|
||||||
if ($name =~ /^L(\d+)$/) {
|
if ($name =~ /^L(\d+)$/) {
|
||||||
$labelnum = $1 + 1 if ($labelnum >= $1);
|
$labelnum = $1 + 1 if ($1 >= $labelnum);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1550,7 +1550,12 @@ sub read_operand_addr24
|
|||||||
my $addr = $byte1;
|
my $addr = $byte1;
|
||||||
$addr += $byte2 << 8;
|
$addr += $byte2 << 8;
|
||||||
$addr += $byte3 << 16;
|
$addr += $byte3 << 16;
|
||||||
set_operand(sprintf("0x%.6x", $addr));
|
if ($branch) {
|
||||||
|
set_operand(sprintf("%s", get_label($addr)));
|
||||||
|
add_comment(sprintf("0x%.6x", $addr));
|
||||||
|
} else {
|
||||||
|
set_operand(sprintf("0x%.6x", $addr));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
## ASSUMPTION: This is always the last operand!!!
|
## ASSUMPTION: This is always the last operand!!!
|
||||||
|
|||||||
Reference in New Issue
Block a user