Could we perhaps do something like this?
.section ISGN dcl_param SV_Position, v0.xyz, float, POS dcl_param SV_IsFrontFace.x, v1.x, uint, FFACE dcl_param texcoord_2.xy, v2.xy dcl_param texcoord_3.xy, v3.xy, uint .section OSGN dcl_param SV_Target_0.xyzw, o0.xyzw, float, TARGET dcl_param SV_Target_1.xyzw, o1.xyzw, float, TARGET .section SHEX ...
My idea was to use comments (introduced by `//`) to stay compatible (and actually become more similar) to the native compiler. The format you suggest is technically incompatible in both directions. Is that intended?
WRT the specific syntax, there is no slot for the register number. I guess that you take for implicit that the order is used, but AFAIU there are a few complications: * a shader might use non contiguous registers: this can be worked around by adding a syntax to skip a register; it's not clear to me if large register numbers can be used for some definition of "large", but I'm not sure it's a good idea to be constrained by the syntax in this case; * a register can be used more than twice, I think, with non-overlapping write masks; * some parameters don't have a register number, because they use a specialized register type; I think that happens for depth and possibly a few others. In that case I think DXBC uses -1 internally.