testb $1, %al
je .L3
leal 1(%eax,%eax,2), %eax
jmp .L4
我收到了上面的汇编代码,并要求将其翻译成c代码。
我知道它几乎都在做什么,我只是不知道如何为%al
寄存器做C代码。
这是汇编代码的其余部分,如果它有帮助
prob2:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
cmpl $1, %eax
je .L1
.L6:
testb $1, %al
je .L3
leal 1(%eax,%eax,2), %eax
jmp .L4
.L3:
shrl %eax
.L4:
cmpl $1, %eax
jne .L6
.L1:
popl %ebp
ret
答案 0 :(得分:1)
这里没关系。 AL
中的位0与EAX
中的位0相同。 8位操作肯定是编译器的优化。因此,您可以将AL
视为EAX
。