Generating complex ASM output

Peter Barada pbarada@mail.wm.sps.mot.com
Wed Mar 13 07:59:00 GMT 2002


>I have a number of instruction patterns whose operands are rather
>complicated. Whilst it might be possible to generate operand codes to
>output these operands in different ways, I am looking for a way which is
>easier. Is it possible to:
>
>1) Output the assembly directly to the output file. For example:
>     (define_insn "*patternName"
>        [pattern matching]
>        ""
> 	"*{
>	  if (operand[0] == something) fprintf(asmFile,"foo");
>	  else fprintf(asmFile, "bar")}";

Yes, but not using printf.  The function to use is asm_output_insn().
grep for it in gcc/config/*./*.md to see how it is used in define_insn
patterns.  

If you have only use output_asm_insn in your pattern, then return a
null string.  Again, you'll see this in the .md files.

You may want to look at pushing the complication into the functions
that PRINT_OPERAND and PRINT_OPERAND_ADDRESS call instead of the
patterns since it localizes the complexity of the operands into one
place, as well lets you use them in multiple patterns.

-- 
Peter Barada                                   Peter.Barada@motorola.com
Wizard                                         781-852-2768 (direct)
WaveMark Solutions(wholly owned by Motorola)   781-270-0193 (fax)



More information about the Gcc mailing list