That's a weird choice for a generic implementation. Maybe make that a template parameter, and provide some typedefs for ARMCodeBlock (CodeBlock<ARMEmitter, ????>) and X64CodeBlock (CodeBlock<X64Emitter, 0xCC>).