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

    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.

Reply
  • 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.

Children
No data