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