Updated the way Instructions keep track of symbols. Only their name is important but we need the Symbols to be able to track which Instruction they point to (if they do that is, i.e. a label symbol).
This commit is contained in:
+18
-20
@@ -96,25 +96,23 @@ int main(int argc, char* args[]) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (ins->ParameterOne->ParameterType == RegisterParameter) {
|
||||
GetRegisterText(ins->ParameterOne->Value.Register, reg);
|
||||
switch(ins->ParameterOne->ParameterType) {
|
||||
case RegisterParameter:
|
||||
GetRegisterText(ins->ParameterOne->Value.Register, reg);
|
||||
|
||||
if (ins->ParameterOne->InterpretedAs == AddressParameter) {
|
||||
printf("[%s]", reg);
|
||||
}
|
||||
else {
|
||||
printf("%s", reg);
|
||||
}
|
||||
}
|
||||
|
||||
if (ins->ParameterOne->ParameterType == ConstantParameter) {
|
||||
if (ins->ParameterOne->InterpretedAs == AddressParameter) printf("[%d]", ins->ParameterOne->Value.Number);
|
||||
else printf("%d", ins->ParameterOne->Value.Number);
|
||||
}
|
||||
|
||||
if (ins->ParameterOne->ParameterType == AddressParameter) {
|
||||
if (ins->ParameterOne->InterpretedAs == AddressParameter) printf("[%s]", ins->ParameterOne->Value.Symbol->Name);
|
||||
else printf("%s", ins->ParameterOne->Value.Symbol->Name);
|
||||
if (ins->ParameterOne->InterpretedAs == AddressParameter) printf("[%s]", reg);
|
||||
else printf("%s", reg);
|
||||
break;
|
||||
case ConstantParameter:
|
||||
if (ins->ParameterOne->InterpretedAs == AddressParameter) printf("[%d]", ins->ParameterOne->Value.Number);
|
||||
else printf("%d", ins->ParameterOne->Value.Number);
|
||||
break;
|
||||
case AddressParameter:
|
||||
if (ins->ParameterOne->InterpretedAs == AddressParameter) printf("[%s]", ins->ParameterOne->Value.Symbol);
|
||||
else printf("%s", ins->ParameterOne->Value.Symbol);
|
||||
break;
|
||||
default:
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
if (!ins->ParameterTwo) {
|
||||
@@ -134,8 +132,8 @@ int main(int argc, char* args[]) {
|
||||
else printf(", %d\n", ins->ParameterTwo->Value.Number);
|
||||
break;
|
||||
case AddressParameter:
|
||||
if (ins->ParameterTwo->InterpretedAs == AddressParameter) printf(", [%s]\n", ins->ParameterTwo->Value.Symbol->Name);
|
||||
else printf(", %s\n", ins->ParameterTwo->Value.Symbol->Name);
|
||||
if (ins->ParameterTwo->InterpretedAs == AddressParameter) printf(", [%s]\n", ins->ParameterTwo->Value.Symbol);
|
||||
else printf(", %s\n", ins->ParameterTwo->Value.Symbol);
|
||||
break;
|
||||
default:
|
||||
printf("\n");
|
||||
|
||||
Reference in New Issue
Block a user