Я запустил проект с открытым исходным кодом Осьминожка 3 года назад теперь. Я могу подтвердить по крайней мере 2 вещи из ответов, уже отправленных:
1) Вначале, мне действительно понравилось, когда идея octopussy использование его 8 щупалец поймала все журналы и имела животное для создания "книжного стиля O'Reilly"
, НО
2) я сделал свое первое объявление выпуска о [1 114] спустя месяцы Freshmeat 6 после моего первого общедоступного выпуска на [1 115] SourceForge, и я видел различие... переход от 30 загрузок/месяц до 160 загрузок/месяц
[еще 1113], загрузки делают не, обязательно означает больше разработчиков, но это дает больше обратных связей!
Пока я тоже ничего не могу найти , Я могу дать некоторые пояснения относительно вероятного ответа:
ABI определяет, что при вызове функции стек должен быть пустым, и он должен снова быть пустым при выходе, если только возвращаемое значение не является значением с плавающей запятой, где это было бы единственный предмет в стеке.
Поскольку обработчик исключений должен иметь возможность возвращаться в любое место, некоторые критерии должны выполняться в этих местах. Вопрос здесь в том, знает ли устройство разматывания стека какие-либо сведения о стеке FPU функции, имеющей catch ()? Скорее всего, ответ будет отрицательным, потому что проще и быстрее создать подходящую точку возврата с фиксированными свойствами, чем включать полный стек FPU в размотку.
Что приводит к вашей проблеме - обычно при возникновении исключения компилятор заботится о том, чтобы FPU был пуст, но в обработчике SEH компилятор не имеет ни малейшего представления о том, что он вызвал запись в другую функцию, и поэтому не может позаботиться вещей на всякий случай. (кроме того, что он снова ужасно медленный)
Это означает, что, скорее всего, стек FPU должен быть в «согласованном» состоянии после возврата, что означает, что вам, вероятно, нужен эквивалент инструкции EMMS.
Почему EMMS? Что ж, если он не поддерживается, он выполняет следующее:
Если вы хотите поддерживать Pentium 1 или хуже, вы, конечно, можете использовать if () вокруг EMMS и использовать что-нибудь другое.