View previous topic :: View next topic
|
Author |
Message |
zmoney
New User
Joined: 15 Jan 2021 Posts: 4 Location: PL
|
|
|
|
Does anyone know where the OPTLINK linkage convention is documented? I can't find it in any of the PL/I or LE manuals. |
|
Back to top |
|
|
Garry Carroll
Senior Member
Joined: 08 May 2006 Posts: 1205 Location: Dublin, Ireland
|
|
Back to top |
|
|
Joerg.Findeisen
Senior Member
Joined: 15 Aug 2015 Posts: 1329 Location: Bamberg, Germany
|
|
|
|
You beat me by seconds. |
|
Back to top |
|
|
steve-myers
Active Member
Joined: 30 Nov 2013 Posts: 917 Location: The Universe
|
|
|
|
I came across some documentation back in the 90s. I'm just feeding back my analysis of the documentation at the time as I don't recall all the gory details.
It seeks to lower CALL/SAVE/RETURN overhead, which is rather awful in standard LE. It's not really as much an issue in PL/I as it is in C++.
It reduces number of saved registers. The STM 14,12,12(13) and LM 14,12,12(13) in LE standard linkage is terribly expensive. This has caused me to be more aware of this issue in my code, and I'm almost 100% Assembler.
The truth of the matter is most of us Assembler programmers are rather poor in using registers, and the compilers could do better. It's forcing the compilers to use fewer registers. The STM and LM in standard linkage are saving and restoring registers that are not always being used.
There are a lot of changes in stack management. The most notable change I can recall is storage for a single stack element is limited to 2K. The stack pointer reg points to the stack area - 2K.
It understands the difference in code that calls a subroutine and code that does not call a subroutine, and uses a simplified approach that does not use the full stack management. This is important for C++. |
|
Back to top |
|
|
|