我正在尝试将 x86-64 程序集转换为 C 代码,但仍然不确定某些行。
这是汇编代码:
....
pushq %rbp
movq %rsp, %rbp
subq $20, %rsp
movl %edi, -20(%rbp)
movl $2, -4(%rbp)
jmp .L2
movl -20(%rbp), %eax //1 Lines 1-3 divide %eax / -4(%rbp)
cltd //2 the quotient is stored in %eax
idivl -4(%rbp) //3 Remainder is stored in %edx
movl %edx, %eax
testl %eax, %eax
jne .L3
movl $0, %eax
jmp .L4
.L3:
addl $1, -4(%rbp)
.L2:
movl -4(%rbp), %eax
cmpl -20(%rbp), %eax
jl .L5
movl $1, %eax
.L4:
leave
ret
.....
在 C 中,它会是:
int function (int param) {
int var1= 2;
while (var1 < param) {
if (eax != 0) { // instead of eax, should it be var1?
eax = eax / var1; // unsure about the body
}
return var1;
}
如果有人可以帮助指导我走向正确的方向或向我展示我所缺少的东西,那就太好了。