我正在查看一个将 100 除以 10 的小型 C++ 程序的一些汇编代码,但是我在汇编程序中看到一些奇怪的数字没有意义。我曾尝试浏览本网站和其他一些地方的信息,但无济于事。
我指的 c++ 行是:
x = x / 10; //myInt is now 10
我得到的程序集是:
mov eax, DWORD PTR [rbp-4]
movsx rdx, eax
imul rdx, rdx, 1717986919
shr rdx, 32
sar edx, 2
sar eax, 31
mov ecx, eax
mov eax, edx
sub eax, ecx
mov DWORD PTR [rbp-4], eax
我对 1717986919、32、2 和 31 感到困惑。我猜这与汇编第 2 行中的符号扩展有关,而数字现在是有符号的 32 位整数。我是在正确的轨道上还是我走错了路?任何帮助或有用的资源将不胜感激,谢谢!