include "ASM/String.ma". include "ASM/I8051.ma". include "common/CostLabel.ma". include "common/AST.ma". include "common/Registers.ma". inductive joint_instruction (globals: list ident): Type[0] ≝ | joint_instr_comment: String → joint_instruction globals | joint_instr_cost_label: costlabel → joint_instruction globals | joint_instr_int: register → Byte → joint_instruction globals | joint_instr_pop: joint_instruction globals | joint_instr_push: joint_instruction globals | joint_instr_address: ∀i: ident. (member i (eq_identifier ?) globals) → joint_instruction globals | joint_instr_from_acc: register → joint_instruction globals | joint_instr_to_acc: register → joint_instruction globals | joint_instr_opaccs: OpAccs → joint_instruction globals | joint_instr_op1: Op1 → joint_instruction globals | joint_instr_op2: Op2 → register → joint_instruction globals | joint_instr_clear_carry: joint_instruction globals | joint_instr_load: joint_instruction globals | joint_instr_store: joint_instruction globals | joint_instr_call_id: ident → joint_instruction globals | joint_instr_cond_acc: ident → joint_instruction globals. inductive joint_statement (A: Type[0]) (globals: list ident): Type[0] ≝ | joint_st_sequential: joint_instruction globals → A → joint_statement A globals | joint_st_goto: ident → joint_statement A globals | joint_st_return: joint_statement A globals.