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