Pointers and references: Difference between revisions
m
→Pointers on the stack
Puppydrum64 (talk | contribs) |
Puppydrum64 (talk | contribs) |
||
Line 16:
LDA $0101,X ;load the byte most recently pushed on the stack into A without pulling it off the stack.</lang>
Note that in a subroutine, the value at <code>$0101,x</code> is typically the low byte of the program counter, plus 1. It may be different depending on how many registers you pushed onto the stack prior to entry as well. In this example, we'll look at a hand-written translation of the following [[C]] function
<lang C>inline unsigned char foo (unsigned char a, unsigned char b, unsigned char c){
return a+b+c;
Line 34:
LDA $0106,X ;LDA #arg_C
CLC
ADC $0105,X
CLC
ADC $0104,X ;ADC #arg_A
;we have the desired value in A, now return.
|