Using and Porting GNU CC - Dispatch Tables

Node: Dispatch Tables Next: Alignment Output Prev: Instruction Output Up: Assembler Format

Output of Dispatch Tables

This concerns dispatch tables.

ASM_OUTPUT_ADDR_DIFF_ELT (stream, value, rel)
This macro should be provided on machines where the addresses in a dispatch table are relative to the table's own address.

The definition should be 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 ASM_OUTPUT_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)

ASM_OUTPUT_ADDR_VEC_ELT (stream, value)
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 ASM_OUTPUT_INTERNAL_LABEL . For example,

	fprintf (stream, "\t.word L%d\n", value)

ASM_OUTPUT_CASE_LABEL (stream, prefix, num, table)
Define this if the label before a jump-table needs to be output specially. The first three arguments are the same as for ASM_OUTPUT_INTERNAL_LABEL ; the fourth argument is the jump-table which follows (a jump_insn containing an addr_vec or addr_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 ASM_OUTPUT_INTERNAL_LABEL .

ASM_OUTPUT_CASE_END (stream, num, table)
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.


Next: Alignment Output Up: Assembler Format