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

Which registers can I trash with user-defined bank switching?

Using C51 (v6.xx/7.xx) with user defined bank switching (mode 4), which registers must be preserved on the call and return?

R1-R7 must be preserved on the call & return, since these pass parameters & return values.

The carry flag must be preserved on return, since it may return a bit value.

Examining Keil code & examples, it seems that it's ok to trash ACC and DPTR.

What about R0, B and other flags?

I couldn't find anything explicit in the documentation, so have currently taken a conservative position with my (rather complicated) bank switching routine.

Parents
  • The comments in XBANKING.A51 now tell you which registers can be trashed. For example:

    ;-----------------------------------------------------------------------------
    ; CLDXPTR: Load   BYTE in A             via Address given in R1/R2/R3
    ; Registers which can be used without saving:  DPTR, CY, A
    ;
    

    Actually, I think I had the same question a while back and nagged them into putting this information in the comments. So it should be available in the 7.x example. If not, I suspect the convention hasn't changed. The v8 comments might still apply to the older code generator. But only Keil can say for sure.

Reply
  • The comments in XBANKING.A51 now tell you which registers can be trashed. For example:

    ;-----------------------------------------------------------------------------
    ; CLDXPTR: Load   BYTE in A             via Address given in R1/R2/R3
    ; Registers which can be used without saving:  DPTR, CY, A
    ;
    

    Actually, I think I had the same question a while back and nagged them into putting this information in the comments. So it should be available in the 7.x example. If not, I suspect the convention hasn't changed. The v8 comments might still apply to the older code generator. But only Keil can say for sure.

Children