<' struct instruction { %opcode : uint (bits : 3); %operand : uint (bits : 5); %address : uint (bits : 8); !data_packed_high : list of bit; !data_packed_low : list of bit; keep opcode == 0b100; keep operand == 0b11001; keep address == 0b00001111; post_generate() is also { data_packed_low = pack(packing.low, opcode, operand); data_packed_high = pack(packing.high, opcode, operand); }; }; extend sys { ins : instruction; run() is also { print ins using bin; print ins.data_packed_low using bin; print ins.data_packed_high using bin; }; }; '>