mirror of
https://github.com/cc65/cc65.git
synced 2024-06-15 17:30:06 +00:00
Cleaner updating of instructions
This commit is contained in:
parent
dec65176f0
commit
db8ac355cb
|
@ -87,6 +87,7 @@ unsigned OptLongAssign (CodeSeg* S)
|
||||||
L[0] = CS_GetEntry (S, I);
|
L[0] = CS_GetEntry (S, I);
|
||||||
|
|
||||||
if (CS_GetEntries (S, L+1, I+1, 12)) {
|
if (CS_GetEntries (S, L+1, I+1, 12)) {
|
||||||
|
CodeEntry* N;
|
||||||
if (/* Check the opcode sequence */
|
if (/* Check the opcode sequence */
|
||||||
L[0]->OPC == OP65_LDA &&
|
L[0]->OPC == OP65_LDA &&
|
||||||
L[1]->OPC == OP65_STA &&
|
L[1]->OPC == OP65_STA &&
|
||||||
|
@ -119,15 +120,13 @@ unsigned OptLongAssign (CodeSeg* S)
|
||||||
!RegXUsed (S, I+12) &&
|
!RegXUsed (S, I+12) &&
|
||||||
!CS_RangeHasLabel(S, I, 12)) {
|
!CS_RangeHasLabel(S, I, 12)) {
|
||||||
|
|
||||||
L[1]->AM = L[11]->AM;
|
N = NewCodeEntry (OP65_STA, L[11]->AM, L[11]->Arg, 0, L[11]->LI);
|
||||||
L[1]->Size = L[11]->Size;
|
CS_DelEntry (S, I+1);
|
||||||
L[1]->Flags = L[11]->Flags;
|
CS_InsertEntry (S, N, I+1);
|
||||||
CE_SetArg(L[1], L[11]->Arg);
|
|
||||||
|
|
||||||
L[3]->AM = L[9]->AM;
|
N = NewCodeEntry (OP65_STA, L[9]->AM, L[9]->Arg, 0, L[9]->LI);
|
||||||
L[3]->Size = L[9]->Size;
|
CS_DelEntry (S, I+3);
|
||||||
L[3]->Flags = L[9]->Flags;
|
CS_InsertEntry (S, N, I+3);
|
||||||
CE_SetArg(L[3], L[9]->Arg);
|
|
||||||
|
|
||||||
CS_DelEntries (S, I+8, 4);
|
CS_DelEntries (S, I+8, 4);
|
||||||
|
|
||||||
|
@ -183,6 +182,7 @@ unsigned OptLongCopy (CodeSeg* S)
|
||||||
L[0] = CS_GetEntry (S, I);
|
L[0] = CS_GetEntry (S, I);
|
||||||
|
|
||||||
if (CS_GetEntries (S, L+1, I+1, 12)) {
|
if (CS_GetEntries (S, L+1, I+1, 12)) {
|
||||||
|
CodeEntry *N;
|
||||||
if (L[0]->OPC == OP65_LDA &&
|
if (L[0]->OPC == OP65_LDA &&
|
||||||
!strncmp(L[0]->Arg, L[5]->Arg, strlen(L[5]->Arg)) &&
|
!strncmp(L[0]->Arg, L[5]->Arg, strlen(L[5]->Arg)) &&
|
||||||
!strcmp(L[0]->Arg + strlen(L[5]->Arg), "+3") &&
|
!strcmp(L[0]->Arg + strlen(L[5]->Arg), "+3") &&
|
||||||
|
@ -214,15 +214,13 @@ unsigned OptLongCopy (CodeSeg* S)
|
||||||
!RegXUsed (S, I+11) &&
|
!RegXUsed (S, I+11) &&
|
||||||
!CS_RangeHasLabel(S, I, 12)) {
|
!CS_RangeHasLabel(S, I, 12)) {
|
||||||
|
|
||||||
L[1]->AM = L[11]->AM;
|
N = NewCodeEntry (OP65_STA, L[11]->AM, L[11]->Arg, 0, L[11]->LI);
|
||||||
L[1]->Size = L[11]->Size;
|
CS_DelEntry (S, I+1);
|
||||||
L[1]->Flags = L[11]->Flags;
|
CS_InsertEntry (S, N, I+1);
|
||||||
CE_SetArg(L[1], L[11]->Arg);
|
|
||||||
|
|
||||||
L[3]->AM = L[9]->AM;
|
N = NewCodeEntry (OP65_STA, L[9]->AM, L[9]->Arg, 0, L[9]->LI);
|
||||||
L[3]->Size = L[9]->Size;
|
CS_DelEntry (S, I+3);
|
||||||
L[3]->Flags = L[9]->Flags;
|
CS_InsertEntry (S, N, I+3);
|
||||||
CE_SetArg(L[3], L[9]->Arg);
|
|
||||||
|
|
||||||
CS_DelEntries (S, I+8, 4);
|
CS_DelEntries (S, I+8, 4);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user