leal -0x61(%edx), %eax
cmpl $0x19, %eax
ja ... ;jump if edx is not between 0x61-0x7a
根据描述,上述代码片段检查edx是否在0x61-0x7a之间。如果不是,则跳转。 据我所知ja检查ZF和CF标志,anf跳转,如果他们是零。 我认为唯一能理解的是计算edx-0x7a的第二行。如果edx < 0x7
我试图推入堆栈的值为one less than %ecx。 所以,我想这个指令是: pushl $(%ecx - 1)
但是我从as得到下面的错误。 fact.s: Assembler messages:
fact.s:49: Error: register value used as expression
作为一种变通方法,我做了以下内容: movl %ecx, %edx
subl