1

我的 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 时,因为它在每次迭代中都会增加

4

3 回答 3

1

没有调试器?do_stuff 是否修改 %edi?尝试将 do_stuff 注释掉。

于 2011-01-13T07:43:03.827 回答
0

正如其他人所提到的,小心使用do_stuff. 您正在寻找的真正东西是调用约定,尤其是这一行:

可在函数中使用寄存器 EAX、ECX 和 EDX。

于 2011-01-14T07:15:54.353 回答
0

我不知道 do_exit 后面是否有空格,我不知道你是如何执行汇编代码的......

但尝试在 do_exit 之后添加以下内容:

离开

ret

于 2011-01-13T14:13:44.067 回答