Сборка бесконечного цикла - PullRequest
1 голос
/ 13 января 2011

Моя сага с сборкой x86 продолжается, я вхожу в бесконечный цикл с этим фрагментом кода, и я немного озадачен.

movl $1, %ecx
movl $4, %edi

do_loop:
   cmpl %edi, %ecx
   je do_exit
   .........
   do_stuff
   .........
   incl %ecx
   jmp do_loop
do_exit:

Я ожидаю скачок к do_exit: когда% ecx достигает 4, поскольку оно увеличивается на каждой итерации

Ответы [ 3 ]

1 голос
/ 13 января 2011

Нет отладчика?Do_stuff изменяет% edi?Попробуйте комментировать do_stuff out.

0 голосов
/ 14 января 2011

Как уже упоминалось, будьте осторожны с использованием регистра в do_stuff. И реальная вещь, которую вы ищете, это соглашения о вызовах , и особенно эта строка:

Для использования в функции доступны регистры EAX, ECX и EDX.

0 голосов
/ 13 января 2011

Я не знаю, сопровождается ли пробелом do_exit, и я не знаю, как вы выполняете код сборки ...

, но попробуйте добавить следующее после do_exit:

отпуск

ret

...