Forums

56303 C Compiler

Started by Rob Tonneberger June 25, 2007
I have a strange problem with the tools. I've searched the
documentation to no avail. When I assemble the output from the
compiled source files, I get the error "ERROR --- Instruction cannot
appear immediately after control register access or an ENDDO (Opcode
field)". This error refers to the following code snippet where the
given line number is the "rts" instruction at the end of the function:
move (r6)-
move y:(r6)-,r7
move y:(r6)-,r2
move y:(r6),y0
move y:-(r6),ssh
rts
By inserting a "nop" between the last "move" and the "rts", the
assembly error goes away. As this file has five instances of this so
that every time I recompile, I have to go in and edit the resulting
asm file.
The compiler invocation line is: "g563c -g -S Comm.c -o Comm.asm"
The assembler line is: "asm56300 -b -l Comm.asm"
Thanks alot for your help! Rob.
Motorola DSPs in the past have had issues like this, which are "pipeline" issues--some instructions cannot be put after certain other instructions.Usually, this doesn't cause problems. Emailing Freescale tech support may get you an answer.

Rob Tonneberger wrote: I have a strange problem with the tools. I've searched the
documentation to no avail. When I assemble the output from the
compiled source files, I get the error "ERROR --- Instruction cannot
appear immediately after control register access or an ENDDO (Opcode
field)". This error refers to the following code snippet where the
given line number is the "rts" instruction at the end of the function:
move (r6)-
move y:(r6)-,r7
move y:(r6)-,r2
move y:(r6),y0
move y:-(r6),ssh
rts
By inserting a "nop" between the last "move" and the "rts", the
assembly error goes away. As this file has five instances of this so
that every time I recompile, I have to go in and edit the resulting
asm file.
The compiler invocation line is: "g563c -g -S Comm.c -o Comm.asm"
The assembler line is: "asm56300 -b -l Comm.asm"
Thanks alot for your help! Rob.
Think the easiest is to change the emitted code in the sources of the compiler.

Stefan

Rob Tonneberger wrote:
> I have a strange problem with the tools. I've searched the
> documentation to no avail. When I assemble the output from the
> compiled source files, I get the error "ERROR --- Instruction cannot
> appear immediately after control register access or an ENDDO (Opcode
> field)". This error refers to the following code snippet where the
> given line number is the "rts" instruction at the end of the function:
> move (r6)-
> move y:(r6)-,r7
> move y:(r6)-,r2
> move y:(r6),y0
> move y:-(r6),ssh
> rts
> By inserting a "nop" between the last "move" and the "rts", the
> assembly error goes away. As this file has five instances of this so
> that every time I recompile, I have to go in and edit the resulting
> asm file.
> The compiler invocation line is: "g563c -g -S Comm.c -o Comm.asm"
> The assembler line is: "asm56300 -b -l Comm.asm"
> Thanks alot for your help! Rob.