Thanks very much for your replies. Actually I'm interested on doing something similar to the -mdisable-indexing of the PA proc. but to the SPARC. I'm being bothered by the indirect jumps since I'm modifying the compiled and linked (sparc-elf-gcc) version of a program. I actually change the number of lines and therefore I need to establish the new links. When those are defined in some of the fields of an instruction I can easily alter them to point to the new address, however when the target address is defined in a register I'm completely lost and I don't have a clue of how to deal with it (or avoid it). Any ideas are welcome. Thanks again! Jorge > > Le mardi 16 juin 2009 à 10:28 -0600, Jeff Law a écrit : > > Ian Lance Taylor wrote: > > > Jorge PEREZ <jorge.perez@xxxxxxxx> writes: > > > > > > > > >> I found that the option -mdisable-indexing prevents the compiler from > > >> using indexing address modes but such option only exists for some > > >> specific architectures. the question is how can i get the same effect of > > >> that option for SPARC (since such option does not exist for sparc-gcc)? > > >> > > > > > > You can't. Sorry. -mdisable-indexing is only supported for the PA > > > processor, where an indexed memory address is one which uses two > > > registers, one of which is multiplied by a constant and added to the > > > other one to form the address. Does the SPARC even support that type of > > > memory address? Why do you want to disable it? > > > > > > > > Note that -mdisable-indexing also disables reg+reg addressing, which is > > by far the more problematical on the PA. > > > > The problem with reg+reg addressing on the PA is it's virtually > > impossible to determine which register is the base and which is the > > index. It's vital to make that distinction because the PA selects the > > memory space (aka segment) register from the base register, not the full > > effective address. > > > > GCC works around this problem by trying to track which register is the > > pointer via REG_POINTER. Which works fine except for Ada which can set > > REG_POINTER on a virtual origin. > > > > Jeff > >