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