Fix offset computation in the presence of explicit prefixes.
authorH. Peter Anvin <hpa@zytor.com>
Wed, 16 Jul 2003 19:53:51 +0000 (19:53 +0000)
committerH. Peter Anvin <hpa@zytor.com>
Wed, 16 Jul 2003 19:53:51 +0000 (19:53 +0000)
assemble.c

index 66fdb21..6da584a 100644 (file)
@@ -356,7 +356,6 @@ long assemble (long segment, long offset, int bits, unsigned long cp,
            if (insn_size < 0)         /* shouldn't be, on pass two */
                error (ERR_PANIC, "errors made it through from pass one");
            else while (itimes--) {
-               insn_end = offset + insn_size;
                for (j=0; j<instruction->nprefix; j++) {
                    unsigned char c=0;
                    switch (instruction->prefixes[j]) {
@@ -402,6 +401,7 @@ long assemble (long segment, long offset, int bits, unsigned long cp,
                        offset++;
                    }
                }
+               insn_end = offset + insn_size;
                gencode (segment, offset, bits, instruction, codes, insn_end);
                offset += insn_size;
                if (itimes > 0 && itimes == instruction->times-1) {