Hello!<br><br>I'm trying to get stack-passed arguments working on my back-end, and I've run into an issue I can't resolve.<br><br>I got the code working to the point that function F1 can call F2 with 5+ arguments fine (we pass 4 in registers). The problem is if F2 then calls another function F3 with 5+ args, then all reading of the stack/call frame is off, the address doesn't get compensated for the difference in stack-depth. When I compile the same code with the MSP430 back end I get something like this (pseudo-code):<br>
f1:   sub   #4, sp<br>       move arg1, 0(sp)<br>       move arg2, 2(sp)<br>        ...fix registerargs...<br>       call f2<br>       ....<br><br>f2:<br>      sub #4, sp<br>      move 6(sp), arg1<br>      move 8(sp), arg2<br>
       ....fix args call f3....<br><br>The important bit in that code is the 6/8 in F2. When I compile the same code with our back-end, the offsets are 0/2, which is off by 4. Structurally our solution mimics MSP430, and I thought I was sure we'd gotten all the relevant parts copied and adjusted, but I can't seem to find a cure for this offset issue! Any help greatly appreciated!<br>
<br>//Per<br>