or not. If you use it, then the overhead is smaller (a CALL and RET instruction per function call, plus instructions to push the arguments onto the stack, plus instructions to save and restore clobbered registers).
If you don't use it, then you get the CALL & RET (plus the argument instructions, plus the register saving), plus 3 instructions to save the frame pointers (push %ebp, then copy %esp into %esp, then at the end of the function, restore %ebp).
This combination can be replaced by an ENTER instruction on 286s and higher, and then the restore-%ebp at the end can be replaced by a LEAVE. But those will have about the same instruction counts (close, at least). |