我目前还在学习装配。其余的代码在我理解之下并且宁愿自己弄清楚,但涉及右移(shrl)的行是我不理解的。 0x1if(4(%rsp)是什么意思?谢谢!
400783: 89 7c 24 ec mov %edi,-0x14(%rsp)
400787: c7 44 24 fc 00 00 00 movl $0x0,-0x4(%rsp)
40078e: 00
40078f: eb 14 jmp 4007a5 <f3+0x22>
400791: 8b 44 24 ec mov -0x14(%rsp),%eax
400795: 83 e0 01 and $0x1,%eax
400798: 85 c0 test %eax,%eax
40079a: 74 05 je 4007a1 <f3+0x1e>
40079c: 83 44 24 fc 01 addl $0x1,-0x4(%rsp)
**4007a1: d1 6c 24 ec shrl -0x1if (4(%rsp)***
4007a5: 83 7c 24 ec 00 cmpl $0x0,-0x14(%rsp)
4007aa: 75 e5 jne 400791 <f3+0xe>
4007ac: 8b 44 24 fc mov -0x4(%rsp),%eax
4007b0: f7 d8 neg %eax
4007b2: c3 retq
答案 0 :(得分:5)
console.log
可能发生了某种OCR错误。编码指令清楚地表明这应该是4007a1: d1 6c 24 ec shrl -0x1if (4(%rsp)
。