Passing parameters on the stack
Posted
by oxinabox.ucc.asn.au
on Stack Overflow
See other posts from Stack Overflow
or by oxinabox.ucc.asn.au
Published on 2010-04-09T05:28:21Z
Indexed on
2010/04/09
6:23 UTC
Read the original article
Hit count: 487
When you pass parameters to a function on the cpu stack,
You put the parameters on then JSR puts the return address on the stack. So that means in your function you must take the top item of the stack (the return address) before you can take the others off)
eg is the following the correct way to go about it:
...
|Let’s do some addition with a function,
MOVE.L #4, -(SP)
MOVE.L #5, -(SP)
JSR add
|the result of the addition (4+5) is in D0 (9)
...
add:
MOVE.L (SP)+, A1 |store the return address
|in a register
MOVE.L (SP)+, D0 |get 1st parameter, put in D0
MOVE.L (SP)+, D2 |get 2nd parameter, put in D2
ADD.L D2, D0 |add them,
|storing the result in D0
MOVE.L A1, -(SP) |put the address back on the
|Stack
RTS |return
© Stack Overflow or respective owner