GNURX toolchain generates incorrect opcode for "mov.b #0xff, [r0]" instruction.

Nick Clifton nickc@redhat.com
Wed Feb 3 14:53:00 GMT 2016


Hi Vinay,

> +	| MOV DOT_B '#' EXPR ',' '[' REG ']'
> +	 { B2 (0xf8, 0x04); IMMB ($4, 12);}

> However I am still facing issue with registers other than r0 like r1-r15. Can you please give
> some hints how to go about with this.

As DJ explained, you need an extra instruction inside these patterns in order to insert the register value.  IE:

	| MOV DOT_B '#' EXPR ',' '[' REG ']'
	 { B2 (0xf8, 0x04); F ($7, 9, 3); IMMB ($4, 12);}

	| MOV DOT_W '#' EXPR ',' '[' REG ']'
          { B2 (0xf8, 0x01); F ($7, 9, 3); IMMW ($4, 12);}

	| MOV DOT_L '#' EXPR ',' '[' REG ']'
	  { B2 (0xf8, 0x02); F ($7, 9, 3); IMM ($4, 12);}

Cheers
   Nick



More information about the Binutils mailing list