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.