This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: GCC Assembler Modifiers
Mohamed Bamakhrama writes:
> Thanks Andrew.
> One more question, where do I find those .md files? I searched for
> them but I couldn't find them in my GCC installation directory.
Please don't top-post.
They're in the gcc source, in gcc/config/i386/
Andrew.
> On 6/14/07, Andrew Haley <aph-gcc@littlepinkcloud.com> wrote:
> > Mohamed Bamakhrama writes:
> >
> > > I have two questions related to the modifiers that can be used with
> > > operands in inline assembly.
> > > 1) What does the 'z' mean when added to the operand modifier (e.g. %z0)?
> >
> > From i386.md:
> >
> > ;; The special asm out single letter directives following a '%' are:
> > ;; 'z' mov%z1 would be movl, movw, or movb depending on the mode of
> > ;; operands[1].
> > ;; 'L' Print the opcode suffix for a 32-bit integer opcode.
> > ;; 'W' Print the opcode suffix for a 16-bit integer opcode.
> > ;; 'B' Print the opcode suffix for an 8-bit integer opcode.
> > ;; 'Q' Print the opcode suffix for a 64-bit float opcode.
> > ;; 'S' Print the opcode suffix for a 32-bit float opcode.
> > ;; 'T' Print the opcode suffix for an 80-bit extended real XFmode float opcode.
> > ;; 'J' Print the appropriate jump operand.
> > ;;
> >
> > > 2) In the Input operands list, what is the meaning of 'J' (e.g. ... :
> > > .... : "Jr" (0) )?
> >
> > See 14.8, Register Classes, in the gcc internals manual.
> >
> > The machine-dependent operand constraint letters (`I', `J', `K',
> > ... `P') specify particular ranges of integer values.
> >
> > Also, see constraints.md:
> >
> > (define_constraint "J"
> > "Integer constant in the range 0 ... 63, for 64-bit shifts."
> > (and (match_code "const_int")
> > (match_test "IN_RANGE (ival, 0, 63)")))
> >
> > Andrew.