+void be_gas_emit_switch_section(be_gas_section_t section);
+
+/**
+ * emit assembler instructions necessary before starting function code
+ */
+void be_gas_emit_function_prolog(const ir_entity *entity,
+ unsigned po2alignment,
+ const parameter_dbg_info_t *paramter_infos);
+
+void be_gas_emit_function_epilog(const ir_entity *entity);
+
+char const *be_gas_get_private_prefix(void);
+
+/**
+ * emit ld_ident of an entity and performs additional mangling if necessary.
+ * (mangling is necessary for ir_visibility_private for example).
+ * Emits a block label for type_code entities.
+ */
+void be_gas_emit_entity(const ir_entity *entity);
+
+/**
+ * Emit (a private) symbol name for a firm block
+ */
+void be_gas_emit_block_name(const ir_node *block);
+
+/**
+ * Starts a basic block. Emits an assembler label "blockname:" if needs_label
+ * is true, otherwise a comment with the blockname if verboseasm is enabled.
+ */
+void be_gas_begin_block(const ir_node *block, bool needs_label);
+
+/**
+ * emit a string (takes care of escaping special chars)
+ */
+void be_gas_emit_cstring(const char *string);
+
+/**
+ * Starts emitting a compilation unit. This emits:
+ * - global assembler snippets
+ * - debug info
+ */
+void be_gas_begin_compilation_unit(const be_main_env_t *env);
+
+/**
+ * ends a compilation unit. This emits:
+ * - global declarations/variables
+ * - debug info
+ */
+void be_gas_end_compilation_unit(const be_main_env_t *env);
+
+/**
+ * Return the label prefix for labeled instructions.
+ */
+const char *be_gas_insn_label_prefix(void);
+
+typedef ir_node* (*get_cfop_target_func)(const ir_node *cfop);
+
+/**
+ * Emits a jump table for switch operations
+ */
+void be_emit_jump_table(const ir_node *node, const ir_switch_table *table,
+ ir_entity *entity,
+ get_cfop_target_func get_cfop_target);