Я пытаюсь лучше понять сборку, и меня немного смущает вопрос о том, как рекурсивно вызывать функции, когда мне приходится иметь дело с регистрами, выталкиванием / нажатием и т. Д.
Я встраиваю сборку x86 в C ++. Здесь я пытаюсь создать метод, который с помощью массива целых чисел создаст связанный список, содержащий эти целые числа, в порядке их появления в массиве.
Я делаю это, вызывая рекурсивную функцию:
insertElem (struct elem *head, struct elem *newElem, int data)
-головка: руководитель списка
-data: номер, который будет вставлен в конец списка
-newElem: указывает место в памяти, где я буду хранить новый элемент (поле данных)
Моя проблема в том, что я продолжаю перезаписывать регистры вместо типичного связанного списка.
Например, если я передам ему массив {2,3,1,8,3,9}, мой связанный список вернет первый элемент (заголовок) и только последний элемент, потому что элементы продолжают перезаписывать друг друга после того, как заголовок больше не имеет значения.
Итак, мой связанный список выглядит примерно так:
2 -> 9 вместо 2 -> 3 -> 1 -> 8 -> 3 -> 9
Мне кажется, что я не понимаю, как организовывать и обрабатывать регистры. newElem находится в EBX и продолжает переписываться. Заранее спасибо!