下面是函数开头的反汇编。第一次提到edx寄存器是" sarl $ 0x3,%edx",它会改变现有值。据我了解,输入函数时edx寄存器的值是未定义的。谁能解释一下这里发生了什么?感谢。
00007672 pushl %ebp
00007673 movl %esp, %ebp
00007675 pushl %edi
00007676 pushl %esi
00007677 pushl %ebx
00007678 calll 0x767d
0000767d popl %ebx
0000767e subl $0x9c, %esp
00007684 movl 0x14(%ebp), %edi
00007687 movl 0x10(%ebp), %esi
0000768a calll __ZN9Node11GetInstanceEv
0000768f movl $0x66666667, %ecx
00007694 movl %eax, -0x8c(%ebp)
0000769a movl %esi, %eax
0000769c imull %ecx
0000769e movl -0x8c(%ebp), %eax
000076a4 sarl $0x1f, %esi
000076a7 sarl $0x3, %edx
000076aa subl %esi, %edx
000076ac cvtsi2ssl %edx, %xmm0
000076b0 leal -0x2c(%ebp), %esi