Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly shrl-0x1if(4(%rsp)-我理解向左移位,但目前不理解汇编指令的-0x1if…部分?_Assembly_X86 64 - Fatal编程技术网

Assembly shrl-0x1if(4(%rsp)-我理解向左移位,但目前不理解汇编指令的-0x1if…部分?

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

我目前仍在学习汇编。下面是我理解的代码的其余部分,我希望自己能够理解,但涉及右移(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   
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)