It says here that setjmp can be used to make coroutines:

On Feb 16, 2008, at 3:29 AM, LluĂ*s Batlle wrote:

> Talking about The Art of Computer Programming... this non-stack based
> calling convention made me think of Knuth's Coroutines. I'm quite
> interested on them, but although I've seen libraries for managing
> them, I've never seen a real useful program based on them. I think
> they could be used with advantages over the thread or normal function
> call abstractions.
> Maybe someone in this list can provide a good example of coroutines
> use?
> 2008/2/16, Paweł Lasek :
>> I don't have latest version of fascicle one (MMIX processor
>> architecture and MMIXAL assembler language, from new version of The
>> Art of Computer Programming) at hand, so I can't confirm it, but I
>> remember that MMIX had a special register which implemented a
>> "border", shifting register numbers to use them for procedure data
>> separation.
>> And as in all RISC architectures, storing as many parameters in the
>> call stack is the way to go. Especially when you have 256 64-bit
>> general purpose registers :-) (Now if only someone implemented a sane
>> architecture using MMIX as main processor...)
>> On 2/16/08, Pietro Gagliardi wrote:
>>> - DOS interrupt function calls use the registers, not the stack.
>>> - SPARC and MIPS registers are provided to pass parameters.
>>> On Feb 15, 2008, at 6:37 PM, Lyndon Nerenberg wrote:
>>>>> The calling conventions I have seen are the ccall, stdcall
>>>>> (Windows' slightly modified version of the ccall), and pascal. All
>>>>> of them push parameters on the stack.
>>>> Take a look at the R-call and S-call conventions used on the IBM
>>>> System 360 architecture. These machines didn't even have a stack.
>>>> --lyndon

>> --
>> Paul Lasek