Re: How "arm_gen_constant" Function In arm.c works?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Ian,

   Thanks for the reply.

>I'm not sure I understand the question.  When you say "how we decide
>these constants in that function," to which constants are you
>referring?

   Sorry for not mentioning my question clearly.
   I mean to say, as we can not generate all the constants from 8 bit
rotation scheme supported in ARM architecture, I just wanted to know the
logic behind that function which generates one Mov and one Add/Sub
instruction if that constant is not being generated by rotation scheme
alone.
   e:g : suppose, the immediate constant is 1234 then that function will do
it as 

       mov r3, #1232
       add r3, r3, #2  (In case of ARM)
   Please tell me, how it splits that constant in to 1232 and 2.

>Some ARM instructions let you shift and rotate operands before
>applying them.  The arm_gen_constant function is so complicated
>because it is looking for different ways to exploit that fact in order
>to generate the constants in the fewest instructions.  The function is
>also considering the context in which the constant is used--this is
>the code parameter--since that permits some further optimizations.

>To understand what this code is doing, first get a clear understanding
>of the ARM architecture.  Then consider how to most efficiently
>implement various operations using constants.

Yes, I am well aware about ARM architecture and so only asked the logic of
"arm_gen_constant" function.

Please, let me know if any one know it.

Thanks & Regards,
Prashant.



-- 
View this message in context: http://old.nabble.com/How-%22arm_gen_constant%22-Function-In-arm.c-works--tp27753882p27764440.html
Sent from the gcc - Help mailing list archive at Nabble.com.


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux