Generate function prologue:
- Save old base pointer
- Set up new base pointer
- Reserve space for local variables
- Save callee-saved registers if used
Generate function epilogue:
- Restore callee-saved registers
- Restore stack pointer
- Restore base pointer
- Return to caller
Handle function calls (caller side):
- Push arguments right-to-left
- Call the function
- Clean up arguments from stack
- Handle return value in eax
Handle parameters (callee side):
- Access parameters via positive offsets from ebp
- First argument at [ebp + 8]
- Second argument at [ebp + 12], etc.