taylor@THINK.COM (06/04/89)
In looking at the output of gdb's disassembler on a ns32k executable, I discovered that it doesn't correctly disassemble many of the instructions. For the `movsu', `movus', and `or' instructions, it was correctly advancing the pc, but only printing the second operand. It turned out that the opcode table in ns32k-opcode.h has a `1' some places where it should have a `2'. This bug makes me wonder, has anyone actually *used* gdb on a ns32k? Anyway, the fix is simple, here's the `diff -c1' output. *** ns32k-opcode.h~ Mon May 29 21:01:16 1989 --- ns32k-opcode.h Thu Jun 1 02:37:07 1989 *************** *** 221,228 **** { "movst", 16,16, 0x800e, "1i" }, ! { "movsub", 14,24, 0x0cae, "1A1A" }, ! { "movsuw", 14,24, 0x0dae, "1A1A" }, ! { "movsud", 14,24, 0x0fae, "1A1A" }, ! { "movusb", 14,24, 0x1cae, "1A1A" }, ! { "movusw", 14,24, 0x1dae, "1A1A" }, ! { "movusd", 14,24, 0x1fae, "1A1A" }, { "movxbd", 14,24, 0x1cce, "1B2D" }, --- 221,228 ---- { "movst", 16,16, 0x800e, "1i" }, ! { "movsub", 14,24, 0x0cae, "1A2A" }, ! { "movsuw", 14,24, 0x0dae, "1A2A" }, ! { "movsud", 14,24, 0x0fae, "1A2A" }, ! { "movusb", 14,24, 0x1cae, "1A2A" }, ! { "movusw", 14,24, 0x1dae, "1A2A" }, ! { "movusd", 14,24, 0x1fae, "1A2A" }, { "movxbd", 14,24, 0x1cce, "1B2D" }, *************** *** 247,251 **** { "notd", 14,24, 0x274e, "1D2D" }, ! { "orb", 6,16, 0x18, "1B1B" }, ! { "orw", 6,16, 0x19, "1W1W" }, ! { "ord", 6,16, 0x1b, "1D1D" }, { "quob", 14,24, 0x30ce, "1B2B" }, --- 247,251 ---- { "notd", 14,24, 0x274e, "1D2D" }, ! { "orb", 6,16, 0x18, "1B2B" }, ! { "orw", 6,16, 0x19, "1W2W" }, ! { "ord", 6,16, 0x1b, "1D2D" }, { "quob", 14,24, 0x30ce, "1B2B" }, David -- David Taylor taylor@think.com, ...!think!taylor