%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
。