我的 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 时,因为它在每次迭代中都会增加
我的 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 时,因为它在每次迭代中都会增加
没有调试器?do_stuff 是否修改 %edi?尝试将 do_stuff 注释掉。
正如其他人所提到的,小心使用do_stuff
. 您正在寻找的真正东西是调用约定,尤其是这一行:
可在函数中使用寄存器 EAX、ECX 和 EDX。
我不知道 do_exit 后面是否有空格,我不知道你是如何执行汇编代码的......
但尝试在 do_exit 之后添加以下内容:
离开
ret