assembler relaxation

Nick Clifton nickc@redhat.com
Mon Dec 28 12:38:00 GMT 2009


Hi Nagaraju,

>    I have ported Binutils to a new port. My problem is that in a 16-bit 
> instruction if the constant range is exceeded then I need to emit  2 
> instructions. I have referred other architectures and did it and my 
> assembler is generating instructions them. While running some bench mark 
> codes it is observed instead of generating two instructions it is 
> generating 1-st instruction correctly and for other instruction it is 
> appending Zero's as a result it got struck up.

Without access to the source code for your new port is hard to give 
specific advice[1] but in general what you need to do is to look at the 
where these instructions are generated/inserted and determine why the 
second instruction is using zeroes.

Note - normally relaxation works the other way.  That is it normally 
removes instructions rather than adding them.  Thus I would have 
expected that the default behaviour be for the compiler (or user, if we 
are talking about hand generated assembler source files) to generate the 
two instruction sequence, and for the assembler to relax this to just 
one instruction if it can show that this will work.

Cheers
   Nick

[1] I am not asking for a copy of the source code - I would rather that 
you debug the problem yourself, possibly with some help from this list. 
  Posting code fragments and more detailed examples of the problem is a 
good idea though.



More information about the Binutils mailing list