Refactor shift operand handling for use from parse_operands, and defer more constant handling to md_apply_fix3. Unfortunately, this means that we can no longer test the out-of-range diagnostic for that constant in the same file as other diagnostics, because if the first assembly pass produces errors, we don't bother running fixups. This isn't the only occurence of this problem in this patch series, and I have not yet written replacement test cases for them. It may not be obvious why the fields of the operands structure need to be unsigned - it's so that they are not sign-extended, and therefore do not clobber inst.instruction when or'ed in. This hasn't been a problem before because the values being stored in all prior operand fields didn't ever get big enough to appear to be negative. shift_kind, however, does. zw