Hans-Peter Diettrich wrote:
Mark Morgan Lloyd schrieb:
So at the very least, we have to consistently simulate a stack- apart
from anything else, that's mandated by Pascal's use of recursion. But
we don't necessarily have to use the same calling convention for Linux
and for "classic" OSes (i.e. including those which are
freely-available, running on Hercules etc.).
See my note on the OS specific/supplied debugger.
Question (to save me digging into the manuals right now): where a
recent machine uses the dedicated stack instructions, is the stack
pointer one of the standard registers? In other words, can push/pop
operations be trivially and exactly simulated for older hardware?
You mean thread safety?
No, I meant that Bernd suggested R1 earlier as a simulated stack
pointer. Does IBM use R1 for this on variants of the architecture that
have push/pop opcodes, or some other general-purpose register, or a
dedicated register?
As long as only one thread is running, the push/pop instructions must
not be atomic.
I hate to correct language usage, but "/need/ not be atomic" would be
clearer.
Multiple threads introduce many more problems, because their return
stacks must never get mixed. Furthermore each thread must have its own
stack, again no conflicts.
--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]
_______________________________________________
fpc-devel maillist - [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel