153 | | * Oui, les piles peuvent déborder, il n'y a aucun mécanisme pour se protéger. Un mécanisme possible serait de lever des exceptions ''accès mémoire interdit'' lorsqu'on sortirait d'une pile, mais il n'y en a pas. |
| 153 | * Oui, les piles peuvent déborder, il n'y a aucun mécanisme pour se protéger. |
| 154 | * Un mécanisme possible serait de lever des exceptions ''accès mémoire interdit'' lorsqu'on sortirait d'une pile, mais il n'y en a pas. |
| 155 | * C'est un problème, parce que déborder une pile, c'est écraser des données. Le plus grave, c'est que la perte de donnée due à l'écrasement peut ne pas être visible avant plusieurs dizaines de millions de cycles et le debug devient particulièrement difficile. |
| 156 | * Pour traiter ce problème, kO6 écrit au début et à la fin des piles, des nombres magiques qui ne devront jamais être écrasés si les piles est correctement utilisées. Ces sont des sentinelles. |
| 157 | * kO6 peut regarder périodiquement (par exemple à chaque commutation) que la pile n'a débordée, si les sentinelles sont toujours là. |
| 158 | * Avec ce mécanisme, on ne peut pas détecter précisément quand le problème arrive mais on a une fourchette temporelle d'un tick d'horloge, c'est déjà pas mal. |