E->OPC = D->OPC;
E->AM = AM;
E->Size = GetInsnSize (E->OPC, E->AM);
- E->Flags = NumArg (E->Arg, &E->Num)? CEF_NUMARG : 0;
E->Arg = GetArgCopy (Arg);
+ E->Flags = NumArg (E->Arg, &E->Num)? CEF_NUMARG : 0; /* Needs E->Arg */
E->Info = D->Info;
E->JumpTo = JumpTo;
E->LI = UseLineInfo (LI);
-#if 0 /* Used for debugging */
-static void DumpRegInfo (const char* Desc, const RegInfo* RI)
-{
- fprintf (stdout, "%s:\n", Desc);
- fprintf (stdout, "In: ");
- RC_Dump (stdout, &RI->In);
- fprintf (stdout, "Out: ");
- RC_Dump (stdout, &RI->Out);
-}
-#endif
-
-
-
void CE_GenRegInfo (CodeEntry* E, RegContents* InputRegs)
/* Generate register info for this instruction. If an old info exists, it is
* overwritten.
break;
case OP65_ASL:
- if (E->AM == AM65_ACC && In->RegA >= 0) {
+ if (E->AM == AM65_ACC && RegValIsKnown (In->RegA)) {
Out->RegA = (In->RegA << 1) & 0xFF;
} else if (E->AM == AM65_ZP) {
switch (GetKnownReg (E->Chg & REG_ZP, In)) {
break;
case OP65_DEC:
- if (E->AM == AM65_ACC && In->RegA >= 0) {
+ if (E->AM == AM65_ACC && RegValIsKnown (In->RegA)) {
Out->RegA = (In->RegA - 1) & 0xFF;
} else if (E->AM == AM65_ZP) {
switch (GetKnownReg (E->Chg & REG_ZP, In)) {
break;
case OP65_INC:
- if (E->AM == AM65_ACC && In->RegA >= 0) {
+ if (E->AM == AM65_ACC && RegValIsKnown (In->RegA)) {
Out->RegA = (In->RegA + 1) & 0xFF;
} else if (E->AM == AM65_ZP) {
switch (GetKnownReg (E->Chg & REG_ZP, In)) {
break;
case OP65_LSR:
- if (E->AM == AM65_ACC && In->RegA >= 0) {
+ if (E->AM == AM65_ACC && RegValIsKnown (In->RegA)) {
Out->RegA = (In->RegA >> 1) & 0xFF;
} else if (E->AM == AM65_ZP) {
switch (GetKnownReg (E->Chg & REG_ZP, In)) {
/* Invalidates all ZP registers */
RC_InvalidateZP (Out);
} else if (E->AM == AM65_ZP) {
- if (In->RegA >= 0) {
+ if (RegValIsKnown (In->RegA)) {
switch (GetKnownReg (E->Chg & REG_ZP, In)) {
case REG_TMP1:
Out->Tmp1 &= ~In->RegA;
/* Invalidates all ZP registers */
RC_InvalidateZP (Out);
} else if (E->AM == AM65_ZP) {
- if (In->RegA >= 0) {
+ if (RegValIsKnown (In->RegA)) {
switch (GetKnownReg (E->Chg & REG_ZP, In)) {
case REG_TMP1:
Out->Tmp1 |= In->RegA;