Показать сообщение отдельно
Старый 11.01.2006, 03:06   #5
AsmLover
 
Сообщений: n/a
Originally posted by impersonalis@Jan 11 2006, 12:22 AM
Ну в общем то целью заметки было предотвратить неосторожное юзание debuglog.
Ведь это сложнонаходимо.
Если переполнить стек программы она либо закрешится, либо молча зкроется - а тут всё считается.. но не правильно.

То что код так не пишут я знаю =)
Это пример.

В любом случае - спибо за автороитетное мнение и уточнение деталей.
1) Хорошо сказал - неосторожное юзанье!
DebugLog можно и нужно использовать.
2)Насчет сложнонаходимо - у меня это заняло 1 минуту с проверкой. А для того, чтобы потренироваться со стеком - надо на Форте попробовать попрограммировать - там одновременно несколько стеков используется, вот где раздолье!
3)Во-первых тут стек не программы, а отладчика. Отладчик работает, как вариант, сохраняя кадр программы и переключая регистр BP на другую область стека. А во-вторых, так как DebugLog чисто информационный, из-за переполнения стека может быть получен только недостоверный результат, поскольку вычисление функции может прерваться в любом месте, но при этом происходит восстановление кадра программы (всех регистров, стека и флагов). То есть краха программы не будет.
Поэтому считается все правильно, только в последней рекурсии, на которой выделенный стек загнулся, вычисление обрывается с итоговым неправильным состоянием регистров микропроцессора, которое выдаст в неправильный результат DET.
 
Ответить с цитированием