Hi, I am facing a strange issue with the encoding of RRX assembly instruction for a project based on TI RM57L843 Arm_v7-R microcontroller: maybe there are bugs in the assemblers?
Here are simple examples of the 4 possible combinations of presence/absence of condition code and flags update for this instruction:
1 rrx r1, r0
2 rrxs r1, r0
3 rrxeq r1, r0
4 rrxeqs r1, r0
According to the documentation from ARM, all of them should be permitted by both A1 and T1 encoding, which in turn should be fully available in the ARMv7 architecture; but when one tries to use the 4 variants, the response depends on the selected Assembler:
* the gnu toolchain rejects variant 3, correctly encoding all of the others;
* the SEGGER toolchain rejects variant 4, while encoding all of the others.
Strange enough, when hand encoding in the simulator the proper bitcodes directly in the memory window, the disassembly window shows quite properly all of the 4 variants, and they are also executed flawless.
Any hint?
Here are simple examples of the 4 possible combinations of presence/absence of condition code and flags update for this instruction:
1 rrx r1, r0
2 rrxs r1, r0
3 rrxeq r1, r0
4 rrxeqs r1, r0
According to the documentation from ARM, all of them should be permitted by both A1 and T1 encoding, which in turn should be fully available in the ARMv7 architecture; but when one tries to use the 4 variants, the response depends on the selected Assembler:
* the gnu toolchain rejects variant 3, correctly encoding all of the others;
* the SEGGER toolchain rejects variant 4, while encoding all of the others.
Strange enough, when hand encoding in the simulator the proper bitcodes directly in the memory window, the disassembly window shows quite properly all of the 4 variants, and they are also executed flawless.
Any hint?