Debugger: Fixed register labels not being used for addresses (roughly) outside the $2000-$5FFF range

This commit is contained in:
Sour 2018-12-10 19:52:16 -05:00
parent 54b4604d7c
commit a46493c6bd
2 changed files with 15 additions and 11 deletions

View file

@ -52,7 +52,7 @@ int32_t LabelManager::GetLabelAddress(uint32_t absoluteAddr, AddressType address
return absoluteAddr;
}
int32_t LabelManager::GetLabelAddress(uint16_t relativeAddr, bool checkRegisters)
int32_t LabelManager::GetLabelAddress(uint16_t relativeAddr)
{
if(relativeAddr < 0x2000) {
return relativeAddr | 0x70000000;
@ -74,11 +74,6 @@ int32_t LabelManager::GetLabelAddress(uint16_t relativeAddr, bool checkRegisters
//Save RAM
return addr | 0x40000000;
}
//Register
if(checkRegisters) {
return relativeAddr | 0x30000000;
}
}
return -1;
@ -86,7 +81,7 @@ int32_t LabelManager::GetLabelAddress(uint16_t relativeAddr, bool checkRegisters
string LabelManager::GetLabel(uint16_t relativeAddr, bool checkRegisters)
{
int32_t labelAddr = GetLabelAddress(relativeAddr, checkRegisters);
int32_t labelAddr = GetLabelAddress(relativeAddr);
if(labelAddr >= 0) {
auto result = _codeLabels.find(labelAddr);
@ -95,12 +90,21 @@ string LabelManager::GetLabel(uint16_t relativeAddr, bool checkRegisters)
}
}
if(checkRegisters) {
labelAddr = relativeAddr | 0x30000000;
auto result = _codeLabels.find(labelAddr);
if(result != _codeLabels.end()) {
return result->second;
}
}
return "";
}
string LabelManager::GetComment(uint16_t relativeAddr)
{
int32_t labelAddr = GetLabelAddress(relativeAddr, false);
int32_t labelAddr = GetLabelAddress(relativeAddr);
if(labelAddr >= 0) {
auto result = _codeComments.find(labelAddr);
@ -114,7 +118,7 @@ string LabelManager::GetComment(uint16_t relativeAddr)
void LabelManager::GetLabelAndComment(uint16_t relativeAddr, string &label, string &comment)
{
int32_t labelAddr = GetLabelAddress(relativeAddr, false);
int32_t labelAddr = GetLabelAddress(relativeAddr);
if(labelAddr >= 0) {
auto result = _codeLabels.find(labelAddr);
@ -164,7 +168,7 @@ int32_t LabelManager::GetLabelRelativeAddress(string &label)
bool LabelManager::HasLabelOrComment(uint16_t relativeAddr)
{
int32_t labelAddr = GetLabelAddress(relativeAddr, true);
int32_t labelAddr = GetLabelAddress(relativeAddr);
if(labelAddr >= 0) {
return

View file

@ -27,7 +27,7 @@ private:
shared_ptr<BaseMapper> _mapper;
int32_t GetLabelAddress(uint32_t absoluteAddr, AddressType addressType);
int32_t GetLabelAddress(uint16_t relativeAddr, bool checkRegisters);
int32_t GetLabelAddress(uint16_t relativeAddr);
public:
LabelManager(shared_ptr<BaseMapper> mapper);