%al在C代码中注册

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 

这没关系。 AL中的Bit0与EAX Bit0相同。 8位操作肯定是编译器的优化。 所以你可以读AL作为EAX