GCC Assembler Modifiers
Andrew Haley
aph-gcc@littlepinkcloud.COM
Thu Jun 14 13:40:00 GMT 2007
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.
More information about the Gcc-help
mailing list