On 05/01/2016 18:46, John Cowan wrote:
Clem Cole scripsit:
On Mon, Jan 4, 2016 at 9:00 PM, Ronald Natalie
<ron(a)ronnatalie.com> wrote:
Just never figured out how to make good use of
the MARK instruction on the
PDP-11.
If I understand it correctly, few if anyone did.
My guess would be that it was intended to support the antiquated Fortran
feature of "multiple returns"
Digital's handbook presents a reasonable (if unusual for Unix) calling
convention that uses MARK. It terms the convention "the standard PDP-11
subroutine return convention".
https://pdos.csail.mit.edu/6.828/2005/readings/pdp11-40.pdf#page=107
This convention pushes a tailored MARK instruction onto the stack, and
then has the called routine return to the address of the pushed MARK
instruction. MARK will in turn clean up the stack and restore R5. If I
understand things correctly, this saves one instruction over doing the
same things through other explicit instructions.
Interestingly, many years before the invention of stack smashing
attacks, we had a calling convention that was based on executing code
placed on the stack.