This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How to get the C-compiler to use RLC and ACC.x

Hello,

I would like to know if there's any way I can write C code that will use the assembly instructions RLC and ACC.x efficiently. I would like to some C code that will result in:

MOV A,byBuffer
MOV c,bInput
RLC A
MOV byBuffer,A

The closest I could get was this:

byBuffer=(byBuffer<<1)&bInput;

Which results in:

MOV A,byBuffer
ADD A,ACC
MOV R7,A
MOV C,bInput
CLR A
RLC A
ANL A,R7
MOV byBuffer,A

The same thing happens when I want to use a specific bit from a byte. I have never seen the C-compiler use the ACC.x instruction. It uses solutions like this:

MOV A,R6
MOV R0,AR5
INC R0
SJMP ?C0078
?C0077:
CLR C
RLC A
?C0078:
DJNZ R0,?C0077

Any ideas ????

Parents
  • First of all a thanks to Graham for the suggestions, they were very helpfull.

    "Of course, there's no such thing as a free lunch, and the price you pay is the loss of control of the generated machine code"

    Agree, but you never lose complete control. The generated code changes as you change your source-code. When I use nested ifs in stead of cases my source may be less (or more) efficient. Therefore I can influence the generated source. Maybe I'll better change my question to this:

    Are there any C-constructions (or macros) that are known to use RLC and Acc.x ??

Reply
  • First of all a thanks to Graham for the suggestions, they were very helpfull.

    "Of course, there's no such thing as a free lunch, and the price you pay is the loss of control of the generated machine code"

    Agree, but you never lose complete control. The generated code changes as you change your source-code. When I use nested ifs in stead of cases my source may be less (or more) efficient. Therefore I can influence the generated source. Maybe I'll better change my question to this:

    Are there any C-constructions (or macros) that are known to use RLC and Acc.x ??

Children