Помимо всех других соображений, вы используете "& stck" вместо ok "stck" в качестве стека! & stck указывает на ячейку, содержащую указатель на выделенный стек
Тогда некоторые наблюдения:
1) setjmp не предназначен для этой цели: этот код может работать только на некоторых системах и, возможно, только с версиями библиотеки времени выполнения som.
2) Я думаю, что АД следует оценивать другим способом. Предлагаю проверить, как вы компилируете составляет стековый фрейм. То есть, на платформах x86 EBP указывает на базу локального контекста, а в * EBP вы можете найти адрес базы вызывающего контекста. ESP указывает на EBP-SIZE_OF_LOCAL_CONTEXT, разные компиляторы обычно вычисляют этот размер по-разному.
Насколько я вижу, вы реализуете какие-то "волокна". Если вы работаете на Win32, есть набор функций, который безопасно реализует эту функцию (см. «Волокна»). На Linux я предлагаю вам взглянуть на "libfiber".
Привет