Cleaner updating of instructions

This commit is contained in:
Colin Leroy-Mira 2024-01-16 09:33:33 +01:00
parent dec65176f0
commit db8ac355cb
1 changed files with 14 additions and 16 deletions

View File

@ -87,6 +87,7 @@ unsigned OptLongAssign (CodeSeg* S)
L[0] = CS_GetEntry (S, I);
if (CS_GetEntries (S, L+1, I+1, 12)) {
CodeEntry* N;
if (/* Check the opcode sequence */
L[0]->OPC == OP65_LDA &&
L[1]->OPC == OP65_STA &&
@ -119,15 +120,13 @@ unsigned OptLongAssign (CodeSeg* S)
!RegXUsed (S, I+12) &&
!CS_RangeHasLabel(S, I, 12)) {
L[1]->AM = L[11]->AM;
L[1]->Size = L[11]->Size;
L[1]->Flags = L[11]->Flags;
CE_SetArg(L[1], L[11]->Arg);
N = NewCodeEntry (OP65_STA, L[11]->AM, L[11]->Arg, 0, L[11]->LI);
CS_DelEntry (S, I+1);
CS_InsertEntry (S, N, I+1);
L[3]->AM = L[9]->AM;
L[3]->Size = L[9]->Size;
L[3]->Flags = L[9]->Flags;
CE_SetArg(L[3], L[9]->Arg);
N = NewCodeEntry (OP65_STA, L[9]->AM, L[9]->Arg, 0, L[9]->LI);
CS_DelEntry (S, I+3);
CS_InsertEntry (S, N, I+3);
CS_DelEntries (S, I+8, 4);
@ -183,6 +182,7 @@ unsigned OptLongCopy (CodeSeg* S)
L[0] = CS_GetEntry (S, I);
if (CS_GetEntries (S, L+1, I+1, 12)) {
CodeEntry *N;
if (L[0]->OPC == OP65_LDA &&
!strncmp(L[0]->Arg, L[5]->Arg, strlen(L[5]->Arg)) &&
!strcmp(L[0]->Arg + strlen(L[5]->Arg), "+3") &&
@ -214,15 +214,13 @@ unsigned OptLongCopy (CodeSeg* S)
!RegXUsed (S, I+11) &&
!CS_RangeHasLabel(S, I, 12)) {
L[1]->AM = L[11]->AM;
L[1]->Size = L[11]->Size;
L[1]->Flags = L[11]->Flags;
CE_SetArg(L[1], L[11]->Arg);
N = NewCodeEntry (OP65_STA, L[11]->AM, L[11]->Arg, 0, L[11]->LI);
CS_DelEntry (S, I+1);
CS_InsertEntry (S, N, I+1);
L[3]->AM = L[9]->AM;
L[3]->Size = L[9]->Size;
L[3]->Flags = L[9]->Flags;
CE_SetArg(L[3], L[9]->Arg);
N = NewCodeEntry (OP65_STA, L[9]->AM, L[9]->Arg, 0, L[9]->LI);
CS_DelEntry (S, I+3);
CS_InsertEntry (S, N, I+3);
CS_DelEntries (S, I+8, 4);