J'essaie d'obtenir une meilleure compréhension de l'assemblée, et je suis un peu confus sur la façon d'appeler récursive fonctions quand je dois traiter avec des registres, popping/pousser, etc.Récursion dans l'assemblage?
J'Embedding assembleur x86 en C++. Ici j'essaye de faire une méthode qui donnée un tableau d'entiers construira une liste liée contenant ces entiers dans l'ordre qu'ils apparaissent dans le tableau.
Je fais cela en appelant une fonction récursive:
insertElem (struct elem *head, struct elem *newElem, int data)
-head: tête de la liste
-data: le nombre qui sera inséré à la fin d'une liste
-newElem: pointe vers l'emplacement en mémoire où je vais stocker le nouvel élément (champ de données)
Mon problème est que je continue d'écraser les registres au lieu d'un typi liste liée par cal. Par exemple, si je lui donne un tableau {2,3,1,8,3,9} ma liste-liée retournera le premier élément (tête) et seulement le dernier élément, parce que les éléments continuent de s'écrire après la tête n'est plus nul.
Voici donc ma liste chaînée ressemble à quelque chose comme: 2 -> 9 au lieu de 2 -> 3 -> 1 -> 8 -> 3 -> 9
Je me sens comme ne saisissez pas comment organiser et gérer les registres. newElem est dans EBX et ne cesse de se réécrire. Merci d'avance!