What is the MIPS Constraints 'c' and 'j'
Ian Lance Taylor
ian@airs.com
Tue Feb 21 06:58:00 GMT 2006
"Eric Fisher" <joefoxreal@gmail.com> writes:
> While I read the mips.md, I find there are some constraints used in
> function call templates, such as 'c' and 'j'. But these two
> constraints seem not be defined and I can't find their explanation
> both in source files and gcc internal. Well, aren't there anywhere I
> missed? Otherwise, how can they work?
'c' and 'j' are register classes. They are defined by
REG_CLASS_FROM_LETTER, is defined to use the array mips_char_to_class,
which is initialized in override_options in mips.c.
'c' is the register class used to hold the address of a function when
calling a function via a register.
'j' is the register class used to hold the address of a function when
calling a function using the SVR4 calling convention, aka -mabicalls.
In fact 'c' and 'j' are the same register class if -mabicalls is in
effect, the class PIC_FN_ADDR_REG, which contains one register, $25.
Ian
More information about the Gcc
mailing list