こんにちは、アセンブリに取り組んでいます。私の問題は次のとおりです。再帰を使用しているときに、アセンブリ内のいくつかの変数を追跡する方法があるかどうかを知る必要があります。スタックを使用して、呼び出し時に再帰関数にパラメーターを渡すことができることを知っています。たとえば、Python のこのコード:
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
私はそれが完全ではないことを知っていますが、たとえば私がやりたいことは、関数を2回呼び出すことです。関数を返すときに、forループでインデックス「i」を追跡する必要があります。アセンブリではJMP
、レジスタを使用する必要がある回数だけ使用して反復します。したがって、RET
が呼び出されると、カウンターの値 (この場合は i) が失われます。