Hallo ich arbeite an Assembly, mein Problem ist das folgende Ich muss wissen, ob es eine Möglichkeit gibt, einige Variablen in Assembly während der Verwendung von Rekursion zu verfolgen. Ich weiß, dass ich den Stapel verwenden kann, um Parameter an die rekursive Funktion zu übergeben, wenn ich es nenne. Zum Beispiel dieses Code in Python: Ich halte immer noch den Überblick über den IndexProbleme beim Verfolgen von Schleifenindex in Rekursion
def topologicalSort(node):
lista = [0,1,1,0,0,0,0,1,0,0,0,1,0,0,0,0]
size = 4
order = []
for i in range(size):
if lista[node*size+i] == 1 and (i+1) not in order:
return topologicalSort(i)
order.append(node+1) #node starts in 1
Ich weiß, es ist nicht vollständig, aber was will ich zum Beispiel tun, ist die Funktion 2 mal aufgerufen habe ich brauche, dass, wenn ich die Funktion zurückgeben "i" in der for-Schleife. In Assembly y tun nur JMP
und Iterieren die Anzahl der Male brauche ich mit einem Register. Also, wenn RET
aufgerufen wird, verliere ich den Wert des Zählers (in diesem Fall ich).
Ich weiß nicht Python, also habe ich dumme Frage: Ist 'lista' lokal (dh definiert jedes Mal, wenn Sie' topologicalSort' eingeben, oder es ist statische/globale Variable (nur eine Kopie pro Anruf)? BTW, wie Sie können stack verwenden, um Parameter zu übergeben, Sie können dort auch Werte speichern. (Stellen Sie sicher, dass Sie sie vor rt platzieren, um den Stack wiederherzustellen.) So funktioniert C normalerweise, indem Sie lokale Funktionsvariablen in den Stack-Bereich setzen. – Ped7g