A generic assembler designed to compile a generic assembly language to different targets