Ian Lance Taylor-3 wrote: > > eija_flight <ajie.dirgantara@xxxxxxxxxxxxxxx> writes: > >> I'm using GCC inline assembly on PowerPc. >> >> Below codes is works : >> >> int reg_gpr() >> { >> int Rx = 0; >> __asm__ ( >> "mr 31,%0\n" >> : >> :"i"(Rx) >> ); >> } >> >> But not with this one : >> >> reg_gpr(0); >> int reg_gpr(int Rx) >> { >> __asm__ ( >> "mr 31,%0\n" >> : >> :"i"(Rx) >> ); >> } >> >> It will send error messages "impossible constraints in asm" >> Is there any other method to modify Rx value from outside functions? > > By using the 'i' constraint you are requiring a constant integer. In > the second case you only have a constant integer if the function is > inlined, which will normally not happen when not optimizing. You can > force it to happen generally by using __attribute__ ((always_inline)). > > Or, you could change to using the 'r' constraint instead of, or in > addition to, the 'i' constraint. The 'r' constraint will permit the > value to be in a general register. > > Ian > > I'm using the "i" constraint because I need to access specific registers respectively, so I need to modify and then pass the variable value to the asm codes to change the usage of each register dynamically. By using "r" constraint, the compiler will be use any available general register, How is my problem can be done by this method? Thanks, -- View this message in context: http://www.nabble.com/PPC-GCC-Inline-assembly-help-tp23403005p23419787.html Sent from the gcc - Help mailing list archive at Nabble.com.