From: Andrew Cagney <cagney@redhat.com>
To: pearly.zhao@oracle.com
Cc: frysk@sourceware.org
Subject: Re: [patch] disassembly window
Date: Mon, 20 Aug 2007 13:32:00 -0000 [thread overview]
Message-ID: <46C997F2.1060206@redhat.com> (raw)
In-Reply-To: <1187340639.3861.47.camel@linux-pzhao.site>
Zhao Shujing wrote:
> Hi
>
> This patch is to fix bug #4932 and other bugs of disassembly window.
> rowPrepend is added to prepend rows by calculating memory information
> like rowAppend. Because the methods that are provided by class
> Disassembler, disassembleInstructions and
> disassembleInstructionsStartEnd, can only read the instructions that are
> following some address, rowPrepend have to use two while execution
> control to read the instructions that are preceding some address.
> Any suggestions are welcomed.
>
Pearly, nice work.
The challenge here, and the reason why the disassembler only goes
forward from PC is that, in general, it isn't possible to disassemble
backwards. This is because architectures such as the i386 and x86-64
have variable length instructions making it effectively impossible to
figure out where, looking backwards, an instruction starts. For
instance, looking backwards is that a one byte int80 instruction, or a
multi-byte instruction loading the hex code for int80?
For disassembling a range, can I suggest doing something similar to the
disassembler command in frysk.hpd.DisassemblerCommand. That code first
attempts to fetch the frysk.symtab.Symbol at the frame's
adjusted-address and then uses its address/size to determine the start
address and size to disassemble. If the symbol isn't available, then
I'd just disassemble a small range from the frame's PC.
One heads up for you; you may want to consider configuring your personal
build with --with-libopcodes.
Andrew
next prev parent reply other threads:[~2007-08-20 13:32 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-17 8:47 Zhao Shujing
2007-08-20 9:07 ` Zhao Shujing
2007-08-20 13:32 ` Andrew Cagney [this message]
2007-08-22 9:14 ` Zhao Shujing
2007-08-22 13:09 ` Andrew Cagney
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=46C997F2.1060206@redhat.com \
--to=cagney@redhat.com \
--cc=frysk@sourceware.org \
--cc=pearly.zhao@oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).