Le prolog et l’épilogue sont-ils obligatoires lors de la rédaction des fonctions d’assemblage?

cemment, j’ai réécrit certaines fonctions de la libc en assembleur et, pour certaines d’entre elles (celle qui n’avait besoin d’aucune instruction call ou syscall , comme strlen), j’ai jeté le prolog et l’épilogue car mes tests n’ont pas échoué sans cela (peut-être que ne pas avoir assez de tests complexes). Lors d’un examen par les pairs, quelqu’un m’a dit que le rejeter était une mauvaise pratique, mais il n’a pas pu m’expliquer pourquoi.

Alors, est-ce que je rencontre des problèmes lorsque j’appelle des fonctions asm qui n’ont pas le combo prolog / épilogue?

Est-ce une bonne pratique de l’append, même si aucun espace supplémentaire n’est nécessaire sur la stack?

Si obligatoire pour certaines raisons, pourquoi le compilateur (j’ai utilisé nasm) ne s’en occupe pas?

Merci d’avoir lu

Si vous ne configurez pas un cadre de stack approprié, il peut être difficile pour un débogueur de savoir quelle fonction vous utilisez actuellement. Sur les cibles ELF, vous devez fournir manuellement les données CFI (voir cet article ) si vous ne configurez pas explicitement un cadre de stack. Sans données CFI, le dépilage de stack ne fonctionne pas et le débogueur risque de ne pas savoir dans quelle fonction vous vous trouvez. Sauf si vous souhaitez append manuellement des données CFI (ce qui est un peu fastidieux et facile à se tromper), je vous recommande de acceptez la perte de performance mineure et configurez simplement un cadre de stack complet.