Post-review tweaks.
This commit is contained in:
@@ -672,7 +672,8 @@ static unsigned OptGotoSPAdj (CodeSeg* S)
|
|||||||
}
|
}
|
||||||
else if (adjustment > 255) {
|
else if (adjustment > 255) {
|
||||||
/* For ranges [-32768, 255) and (255, 32767) the only modification
|
/* For ranges [-32768, 255) and (255, 32767) the only modification
|
||||||
** is to replace the absolute with immediate addressing */
|
** is to replace the absolute with immediate addressing
|
||||||
|
*/
|
||||||
Arg = MakeHexArg (adjustment & 0xff);
|
Arg = MakeHexArg (adjustment & 0xff);
|
||||||
X = NewCodeEntry (OP65_LDA, AM65_IMM, Arg, 0, L[1]->LI);
|
X = NewCodeEntry (OP65_LDA, AM65_IMM, Arg, 0, L[1]->LI);
|
||||||
CS_InsertEntry (S, X, I + 1);
|
CS_InsertEntry (S, X, I + 1);
|
||||||
|
|||||||
@@ -141,9 +141,7 @@ struct SymEntry {
|
|||||||
} L;
|
} L;
|
||||||
|
|
||||||
/* Value of SP adjustment needed after forward 'goto' */
|
/* Value of SP adjustment needed after forward 'goto' */
|
||||||
struct {
|
|
||||||
unsigned short SPAdjustment;
|
unsigned short SPAdjustment;
|
||||||
} G;
|
|
||||||
|
|
||||||
/* Register bank offset and offset of the saved copy on stack for
|
/* Register bank offset and offset of the saved copy on stack for
|
||||||
** register variables.
|
** register variables.
|
||||||
|
|||||||
@@ -408,7 +408,7 @@ void LeaveStructLevel (void)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
SymEntry* FindSymInTable (const SymTable* T, const char* Name, unsigned Hash)
|
static SymEntry* FindSymInTable (const SymTable* T, const char* Name, unsigned Hash)
|
||||||
/* Search for an entry in one table */
|
/* Search for an entry in one table */
|
||||||
{
|
{
|
||||||
/* Get the start of the hash chain */
|
/* Get the start of the hash chain */
|
||||||
@@ -681,15 +681,15 @@ DefOrRef* AddDefOrRef (SymEntry* E, unsigned Flags)
|
|||||||
}
|
}
|
||||||
|
|
||||||
unsigned short FindSPAdjustment (const char* Name)
|
unsigned short FindSPAdjustment (const char* Name)
|
||||||
{
|
|
||||||
/* Search for an entry in the table of SP adjustments */
|
/* Search for an entry in the table of SP adjustments */
|
||||||
|
{
|
||||||
SymEntry* Entry = FindSymInTable (SPAdjustTab, Name, HashStr (Name));
|
SymEntry* Entry = FindSymInTable (SPAdjustTab, Name, HashStr (Name));
|
||||||
|
|
||||||
if (!Entry) {
|
if (!Entry) {
|
||||||
Internal ("No SP adjustment label entry found");
|
Internal ("No SP adjustment label entry found");
|
||||||
}
|
}
|
||||||
|
|
||||||
return Entry->V.G.SPAdjustment;
|
return Entry->V.SPAdjustment;
|
||||||
}
|
}
|
||||||
|
|
||||||
SymEntry* AddLabelSym (const char* Name, unsigned Flags)
|
SymEntry* AddLabelSym (const char* Name, unsigned Flags)
|
||||||
@@ -749,9 +749,10 @@ SymEntry* AddLabelSym (const char* Name, unsigned Flags)
|
|||||||
g_defdata (CF_CONST | CF_INT, StackPtr - DOR->StackPtr, 0);
|
g_defdata (CF_CONST | CF_INT, StackPtr - DOR->StackPtr, 0);
|
||||||
|
|
||||||
/* Optimizer will need the information about the value of SP adjustment
|
/* Optimizer will need the information about the value of SP adjustment
|
||||||
** later, so let's preserve it. */
|
** later, so let's preserve it.
|
||||||
|
*/
|
||||||
E = NewSymEntry (LocalLabelName (DOR->LateSP_Label), SC_SPADJUSTMENT);
|
E = NewSymEntry (LocalLabelName (DOR->LateSP_Label), SC_SPADJUSTMENT);
|
||||||
E->V.G.SPAdjustment = StackPtr - DOR->StackPtr;
|
E->V.SPAdjustment = StackPtr - DOR->StackPtr;
|
||||||
AddSymEntry (SPAdjustTab, E);
|
AddSymEntry (SPAdjustTab, E);
|
||||||
|
|
||||||
/* Are we jumping into a block with initalization of an object that
|
/* Are we jumping into a block with initalization of an object that
|
||||||
|
|||||||
Reference in New Issue
Block a user