Continuations as a language feature (as opposed to continuations as a programming pattern) are reifications of (parts of) the control context ("the stack"). As Don said, undelimited continuations represent the whole context, whereas delimited continuations only represent part of it.
Typically, capturing an undelimited continuation (eg, with call/cc
) doesn't change the control context; the control context is only changed when the continuation is invoked (ie, reflected onto the stack).
Typically, capturing a delimited continuation (eg, with shift
) immediately aborts the segment of the control context up to the nearest delimiter (eg, reset
) and reifies that as what seems to be a plain old function (although it might be implemented as stack trickery rather than however normal functions are implemented).
BTW, continuations are sometimes called "first-class jumps", but that doesn't mean they have any more to do with the jmp
instruction than a normal function call does.