0

您好,我正在从事汇编工作,我的问题是以下我需要知道是否有一种方法可以在使用递归时跟踪汇编中的某些变量。我知道我可以在调用递归函数时使用堆栈将参数传递给它。例如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)。

4

1 回答 1

0

您必须通过函数调用(递归或非递归)保存/恢复任何本地状态。推送/弹出有价值的数据,或者推送/弹出调用保存的寄存器(例如,BX,取决于您的调用约定)并将您的状态数据保存在其中。

于 2016-10-19T04:43:25.083 回答