Next: Exception Region Output, Previous: Instruction Output, Up: Assembler Format
This concerns dispatch tables.
A C statement to output to the stdio stream stream an assembler pseudo-instruction to generate a difference between two labels. value and rel are the numbers of two internal labels. The definitions of these labels are output using
(*targetm.asm_out.internal_label)
, and they must be printed in the same way here. For example,fprintf (stream, "\t.word L%d-L%d\n", value, rel)You must provide this macro on machines where the addresses in a dispatch table are relative to the table's own address. If defined, GCC will also use this macro on all machines when producing PIC. body is the body of the
ADDR_DIFF_VEC
; it is provided so that the mode and flags can be read.
This macro should be provided on machines where the addresses in a dispatch table are absolute.
The definition should be a C statement to output to the stdio stream stream an assembler pseudo-instruction to generate a reference to a label. value is the number of an internal label whose definition is output using
(*targetm.asm_out.internal_label)
. For example,fprintf (stream, "\t.word L%d\n", value)
Define this if the label before a jump-table needs to be output specially. The first three arguments are the same as for
(*targetm.asm_out.internal_label)
; the fourth argument is the jump-table which follows (ajump_insn
containing anaddr_vec
oraddr_diff_vec
).This feature is used on system V to output a
swbeg
statement for the table.If this macro is not defined, these labels are output with
(*targetm.asm_out.internal_label)
.
Define this if something special must be output at the end of a jump-table. The definition should be a C statement to be executed after the assembler code for the table is written. It should write the appropriate code to stdio stream stream. The argument table is the jump-table insn, and num is the label-number of the preceding label.
If this macro is not defined, nothing special is output at the end of the jump-table.