Piratage du ramasse-miettes Go : stockage de pointeurs depuis l’assembleur
Cet article explore les complexités de la manipulation de pointeurs Go à partir de code assembleur, en se concentrant sur l’interaction cruciale avec le ramasse-miettes de Go. La manipulation directe des pointeurs nécessite d’informer explicitement le GC à l’aide de fonctions telles que `runtime.gcWriteBarrier2` et `runtime.writeBarrier` pour éviter les conflits et les pannes éventuelles. L’article aborde également le défi de l’allocation de mémoire alignée sur 128 bits pour une utilisation optimale des instructions AVX, en présentant une solution astucieuse. Cependant, il met en garde contre la dépendance aux fonctions internes du runtime, car leur disponibilité peut changer dans les futures versions de Go.
Lire plus