disassembly options

Dave Korn dave.korn@artimi.com
Fri Sep 7 14:59:00 GMT 2007


On 07 September 2007 15:52, Nick Clifton wrote:

> Hi Robin,
> 
>> It would be nice to have something that automatically told me that the MMR
>> at 0xffc00000 == "PLL_CTL", (the name actually means something - and is
>> referenced in the standard processor documentation), and get something
>> that looks like: 
>> 
>>     20e4:       4a e1 c0 ff     P2.H = 0xffc0   /* 0xffc01f24 */;
>>     20e8:       0a e1 00 00     P2.L = 0x0      /* 0xffc00000 */;
>>     20ec:       10 95           R0 = W[P2] (Z)  /* PLL_CTL */;
> 
> I think that this would be useful.
> 
> You may find however that implementing it in a nice generic way will mean
> that you will have to rewrite the symbol/address decoding part of the
>   disassembler. Not that this would be a bad thing, it could certainly use
> a tidy up. 

  Won't the real tricky bit be in performing the data flow analysis?  There
are relocs on those two assignments.  There's nothing on the load indirect.  I
don't see how it could handle (sorry, don't speak bfin assembler, so this is a
bit made up) stuff like:

  P2.H = 0xffc0   /* 0xffc01f24 */;
  P2.L = 0x0      /* 0xffc00000 */;
  if (condition) goto LABEL
  P2.H = 0xffc0   /* 0xffc01f28 */;
  P2.L = 0x0      /* 0xffc00000 */;
LABEL:
  R0 = W[P2] (Z)  /* ???Don't know??? */;

or 

SUBROUTINE:
  R0 = W[P2] (Z)  /* ???Was set on entry, could be anything ??? */;

or even just

  P2.H = 0xffc0   /* 0xffc01f24 */;
  P2.L = 0x0      /* 0xffc00000 */;
  ( lots of instructions that don't alter P2)
  R0 = W[P2] (Z)  /* ???Don't know??? */;

...?  

    cheers,
      DaveK
-- 
Can't think of a witty .sigline today....



More information about the Binutils mailing list