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

Parameter Passing in Registers

Hi

I am unclear as to how I can pass 2 generic pointer arguments into a function.

As stated in the user guide, the generic ptr will be stored in R1-R3. But however, what happens when there is more than 1 argument?

Please advice. Any explaination is appreciated. Thank you in advance.

Regards
Wtwh

Parents
  • How can I make it a 2-byte pointer?

    I do not know, try typecastion it a short.
    Unfortunately Keil has given in to the PC types that believe that the '51 is just another processor. Anyone coding for the '51 that want to be unaware of which codespace a variable is located in should go back to his/her beloved PC.

    Erik

Reply
  • How can I make it a 2-byte pointer?

    I do not know, try typecastion it a short.
    Unfortunately Keil has given in to the PC types that believe that the '51 is just another processor. Anyone coding for the '51 that want to be unaware of which codespace a variable is located in should go back to his/her beloved PC.

    Erik

Children
  • How can I make it a 2-byte pointer

    Your type declarations must include one of the memory type qualifers, e.g.

    void MyFunction (U8 xdata* p1, U8 xdata* p2)

    instead of

    void MyFunction (U8* p1, U8* p2)

    The first has a two-byte pointers passed in R6/R7 and R4/R5, the second is a three-byte generic pointer passed in R1-R3 and some memory space. The advantage of the second format is that one routine will work on data in any location (data or xdata). The first produces smaller and faster code.