BR 2413272: Warn about byte displacement overflow
authorVictor van den Elzen <victor.vde@gmail.com>
Wed, 10 Dec 2008 12:04:58 +0000 (13:04 +0100)
committerVictor van den Elzen <victor.vde@gmail.com>
Wed, 10 Dec 2008 12:04:58 +0000 (13:04 +0100)
Remove the special case for single byte displacements,
which was already in out() anyway.

assemble.c

index bf4314d12796be2a29d7efc17650d57fe51ae90b..0277d19e9bd75d17397155de178563264cb0f44e 100644 (file)
@@ -1820,20 +1820,9 @@ static void gencode(int32_t segment, int64_t offset, int bits,
                 case 0:
                     break;
                 case 1:
-                    if (opy->segment != NO_SEG) {
-                        data = opy->offset;
-                        out(offset, segment, &data, OUT_ADDRESS, 1,
-                            opy->segment, opy->wrt);
-                    } else {
-                        *bytes = opy->offset;
-                        out(offset, segment, bytes, OUT_RAWDATA, 1,
-                            NO_SEG, NO_SEG);
-                    }
-                    s++;
-                    break;
-                case 8:
                 case 2:
                 case 4:
+                case 8:
                     data = opy->offset;
                    warn_overflow(ea_data.bytes, opy);
                     s += ea_data.bytes;
@@ -1852,6 +1841,12 @@ static void gencode(int32_t segment, int64_t offset, int bits,
                            ea_data.bytes, opy->segment, opy->wrt);
                    }
                     break;
+                default:
+                    /* Impossible! */
+                    errfunc(ERR_PANIC,
+                            "Invalid amount of bytes (%d) for offset?!",
+                            ea_data.bytes);
+                    break;
                 }
                 offset += s;
            }