]> Shamusworld >> Repos - rmac/blobdiff - riscasm.c
Introducing new switch -fr which outputs binaries assembled at a given address.
[rmac] / riscasm.c
index 82caf808d463e07d6b4cbbce9ce7076c2b6d7ae7..9ecc61da0b547fa7509b2718d707b26785cac778 100644 (file)
--- a/riscasm.c
+++ b/riscasm.c
@@ -229,7 +229,7 @@ int GenerateRISCCode(int state)
        int indexed;                            // Indexed register flag
 
        uint64_t eval;                          // Expression value
-       uint16_t eattr;                                 // Expression attributes
+       uint16_t eattr;                         // Expression attributes
        SYM * esym;                                     // External symbol involved in expr.
        TOKEN r_expr[EXPRSIZE];         // Expression token list
 
@@ -325,8 +325,14 @@ int GenerateRISCCode(int state)
                }
                else
                {
+                       if (esym && (esym->sattre & EQUATEDREG))
+                               return error("equated register seen for immediate value");
+
+                       if (eattr & RISCREG)
+                               return error("register seen for immediate value");
+
                        if (((int)eval < reg1) || ((int)eval > reg2))
-                               return error("constant out of range (%d to %d", reg1, reg2);
+                               return error("constant out of range (%d to %d)", reg1, reg2);
 
                        if (parm & SUB32)
                                reg1 = 32 - (int)eval;