]> Shamusworld >> Repos - rmac/blobdiff - procln.c
Version bump. :-)
[rmac] / procln.c
index 8739ce6db05630d2a1726efb0efdae67f9042c12..2cd1bdc3d513b6b7476d33cea3c59b0e09f8b357 100644 (file)
--- a/procln.c
+++ b/procln.c
@@ -36,7 +36,6 @@ static IFENT * f_ifent;                       // Freelist of ifents
 static int disabled;                   // Assembly conditionally disabled
 int just_bss;                                  // 1, ds.b in microprocessor mode 
 VALUE pcloc;                                   // Value of "PC" at beginning of line 
-IFENT * ifent;                                 // Current ifent
 SYM * lab_sym;                                 // Label on line (or NULL)
 
 const char extra_stuff[] = "extra (unexpected) text found after addressing mode";
@@ -137,7 +136,7 @@ loop:                                                       // Line processing loop label
        // Get another line of tokens
        if (TokenizeLine() == TKEOF)
        {
-if (verb_flag) printf("Assemble: Found TKEOF flag...\n");
+if (debug) printf("Assemble: Found TKEOF flag...\n");
                if (list_flag && listflag)                      // Flush last line of source
                        listeol();
 
@@ -265,13 +264,13 @@ as68label:
                switch (state)
                {
                case MN_IF:
-                       d_if ();
+                       d_if();
                goto loop;
                case MN_ELSE:
                        d_else();
                        goto loop;
                case MN_ENDIF:
-                       d_endif ();
+                       d_endif();
                        goto loop;
                case MN_IIF:                                            // .iif --- immediate if
                        if (disabled || expr(exprbuf, &eval, &eattr, &esym) != OK)
@@ -395,13 +394,13 @@ normal:
                // o  everything else
                if (equtyp == EQUREG)
                {
-//Linko's request to issue a warning on labels that equated to the same register
-//would go here. Not sure how to implement it though. :-/
+//Linko's request to issue a warning on labels that equated to the same
+//register would go here. Not sure how to implement it though. :-/
 /*
 Maybe like this way:
 have an array of bools with 64 entries. Whenever a register is equated, set the
-corresponding register bool to true. Whenever it's undef'ed, set it to false. When
-checking to see if it's already been equated, issue a warning.
+corresponding register bool to true. Whenever it's undef'ed, set it to false.
+When checking to see if it's already been equated, issue a warning.
 */
                        // Check that we are in a RISC section
                        if (!rgpu && !rdsp)
@@ -661,6 +660,9 @@ checking to see if it's already been equated, issue a warning.
                goto loop;
        }
 
+       // Keep a backup of chptr (used for optimisations during codegen)
+       chptr_opcode = chptr;
+
        for(;;)
        {
                if ((m->mnattr & siz) && (amsk0 & m->mn0) != 0 && (amsk1 & m->mn1) != 0)