Assembly shrl-0x1if(4(%rsp)-我理解向左移位,但目前不理解汇编指令的-0x1if…部分?
我目前仍在学习汇编。下面是我理解的代码的其余部分,我希望自己能够理解,但涉及右移(shrl)的行是我不理解的。0x1if(4(%rsp)是什么意思?谢谢Assembly shrl-0x1if(4(%rsp)-我理解向左移位,但目前不理解汇编指令的-0x1if…部分?,assembly,x86-64,Assembly,X86 64,我目前仍在学习汇编。下面是我理解的代码的其余部分,我希望自己能够理解,但涉及右移(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 jm
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
400783:89 7c 24 ec mov%edi,-0x14(%rsp)
400787:c7 44 24 fc 00 movl$0x0,-0x4(%rsp)
40078e:00
40078f:eb 14 jmp 4007a5
400791:8b 44 24 ec mov-0x14(%rsp),%eax
400795:83 e0 01和$0x1,%eax
400798:85 c0测试%eax,%eax
40079a:74 05 je 4007a1
40079c:834424FC 01地址$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
4007ac:8b 44 24 fc mov-0x4(%rsp),%eax
4007b0:f7 d8负%eax
4007b2:c3 retq
可能发生了某种OCR错误。编码指令清楚地表明这应该是
shrl-0x14(%rsp)
,看起来像是复制粘贴错误。根据(和)的不平衡计数判断,几乎可以肯定这是一个打字错误。我用objdump创建了一个文本文件,所以我认为这是一个错误?@carlosarelano,这很不寻常。可能是某种文件损坏。请确保你的硬盘没有缺陷。@fuz-hmm我会确保检查出来,但是的,打字最有意义e、 谢谢!
4007a1: d1 6c 24 ec shrl -0x1if (4(%rsp)