%al 在 C 代码中注册

%al register in C code

testb  , %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   , %eax
je     .L1
.L6:
testb  , %al
je     .L3
leal   1(%eax,%eax,2), %eax
jmp    .L4
.L3:
shrl   %eax
.L4:
cmpl   , %eax
jne    .L6
.L1:
popl   %ebp
ret

这里无所谓。 AL 中的 Bit0 与 EAX 中的 Bit0 相同。 8位操作肯定是编译器的优化。所以你可以把 AL 读成 EAX.