[TUHS] Disassemblers

Norman Wilson norman at oclsc.org
Sun Jun 20 11:15:53 AEST 2021


Rob Pike:

  Although upon reflection, I think what I did was fix 'adb' and call it
  'db'. Haven't had my coffee yet this morning.

====

I don't think so.  I did quite a lot of work on adb during my
time at the Labs.  I remember clearly that it still used all
the Bournegol macros when I started; I doubt Rob would have
left that there.  (It was Rob who translated the shell
back to C, I believe.)

I got into adb because it still used ptrace and everyone else
seemed scared to touch the code to convert it to use /proc.
So I fixed that, and fixed sdb too, and finally removed
the ptrace call from the kernel.  I remember celebrating
by expunging ptrace from the UNIX Room copy of the V8
manual.  ptrace happened to occupt two facing pages, which
I glued together.

I did a lot more hacking on adb after that, ranging from
little stuff like making # a synonym for 0x in input
(so that adb's output could be picked up from the screen
and re-used as input, a principle established firmly and
correctly by Rob!) to a major restructuring to isolate
machine-dependent pieces like instruction decoding and
word formats, so that it was simpler not only to make
adb work on a new processor architecture but even to make
a sort of cross-adb that could, say, correctly interpret
a PDP-11 core image on a VAX.  (This actually mattered;
by the time I arrived Research had no PDP-11s running
general-purpose UNIX, but did have LSI-11s acting as
Datakit controllers and a standalone power-backed-up
LSI-11 that decoded the time signal from WWVB.)

I was never really happy about the restructuring; it did
more or less what I wanted but it wasn't really graceful.
And cross-adb needed a distinct binary for each target.
I had thoughts of trying to make a meta-language to
describe the target's data formats (simple except for
floating point) and how to print its instructions
(messier, but I remember being inspired by the clever
table-driven code in an disassembler Ken wrote for,
I think it was, the NS32000), so that one could load
a table from a file at startup; never had the time or
the courage to carry through on it.

Norman Wilson
Toronto ON


More information about the TUHS mailing list