返回哪一个寄存器?

时间:2017-04-22 10:20:57

标签: assembly x86 att

我尝试编写一个输入数量为4的汇编程序。它将循环并将%eax当前值与原始输入数相乘,直到%ecx值为0时跳转到完成。

但程序运行后它返回0。我不确定为什么(?),%ecx寄存器值是否返回而不是%eax?

当有多个寄存器在其中使用值时,返回的内容有哪些规则?

.globl funk
.globl _funk
funk:
_funk:

pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %edx
movl $1, %eax
movl $4, %ecx
jmp check

check:
cmpl $0, %ecx
jz done
jmp multiply

done:
popl %ebp
ret

multiply:
mull %edx
dec %ecx
jmp check

0 个答案:

没有答案