En fait, ça plante pas hein : Push et Pop fonctionnent mais pour les registres 64 bits.
Le seul conflit pour ces registres c'est celui utilisé dans les accès mémoire [p.v_mavariable] : avec ExamineAssembly() on peut vérifier quel registre est utilisé généralement (c'est tout le temps le même, ou les deux mêmes). Et si on néglige ça, effectivement on a un crash possible dans la fin de la routine ASM quand on vient "poper" (restaurer les registres).
Pour les registres xMMn (128, 256 et 512 bits), effectivement, il n'y a pas d'instruction de pile, il faut aligner la pile (un petit gaspillage de quelques octets) et sauvegarder le tout.
Pour EnableASM, ce n'est pas utile : c'est fait pour écrire directement sans signe préfixe '!'. Mais certaines instructions ASM ne sont alors pas pris en compte.
Merci, c'est toujours très bien de voir du SIMD et puis là, ça permet de voir les performances et de comparer.