GCC Assembler Modifiers

Mohamed Bamakhrama bamakhrama@gmail.com
Thu Jun 14 13:42:00 GMT 2007


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.

Regards,

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.
>


-- 
Mohamed Ahmed Bamakhrama
Am Schaeferanger 15, room 035
85764 Oberschleissheim, Germany
Email: bamakhra@cs.tum.edu
Web: http://home.cs.tum.edu/~bamakhra/
Mobile: +49-160-9349-2711



More information about the Gcc-help mailing list