我試圖更好地掌握程序集,我有點困惑如何遞歸調用函數,當我不得不處理寄存器,彈出/推動等。彙編中的遞歸?
我正在嵌入x86程序集C++。在這裏,我正在試圖讓一個給定一個整數數組的方法按照它們出現在數組中的順序建立一個包含這些整數的鏈表。
我通過調用遞歸函數這樣做:
insertElem (struct elem *head, struct elem *newElem, int data)
-head:列表的頭
-data:將在列表
的末尾插入數-newElem:指向內存中我將存儲新元素的位置(數據字段)
我的問題是我一直覆蓋寄存器而不是typi cal鏈表。 例如,如果我給它一個數組{2,3,1,8,3,9},我的鏈表將返回第一個元素(頭),並且只返回最後一個元素,因爲元素在頭後保持相互覆蓋不再爲空。
所以在這裏我的鏈接列表看起來像: 2 - > 9,而不是2 - > 3 - > 1 - > 8 - > 3 - > 9
我覺得像我沒有掌握如何組織和處理寄存器。 newElem在EBX中,只是不斷被重寫。提前致謝!