disassembler
Henry Cejtin
henry@sourcelight.com
Thu, 9 Aug 2001 22:34:56 -0500
The command that I use to single step a program is `stepi', and to show what
instruction is being run I use
display/i $pc
You can see the commands that gdb gets in the wgdb function of spy.
I don't know what you mean by
... a way to get gdb to disassemble an arbitrary (not
necessarily binary) executable
What is a non-binary executable?
You certainly can get gdb do dump out what code looks like in a program
without running it. Just run
gdb a.out
and then enter the gdb command
x/20i addr
and it will disassemble the next 20 instructions starting at addr.
Note, that there are several alternative ways to initialize an object. If
you used %edi instead of %esi for the frontier, then you could use the stos
instruction, which SML/NJ uses. Note, that the really right thing to do is
probably to have the heap running in the opposite direction (frontier gets
decreased). Then you fill in an object from end to start, and are left with
the starting address.
Obviously all micro-optimizations if any win at all, but as you say, the
space saving of one byte per initialization in code space probably adds up.