相关疑难解决方法(0)

获得64位整数乘法的高分

在C++中,说:

uint64_t i;
uint64_t j;
Run Code Online (Sandbox Code Playgroud)

然后i * j将产生一个uint64_t值为i和之间的乘法的下半部分j,即(i * j) mod 2^64.现在,如果我想要乘法的较高部分怎么办?我知道在使用32位整数时,存在一个汇编指令做类似的事情,但我对汇编并不熟悉,所以我希望得到帮助.

制作以下内容的最有效方法是:

uint64_t k = mulhi(i, j);
Run Code Online (Sandbox Code Playgroud)

c++ 64-bit assembly multiplication

22
推荐指数
4
解决办法
1万
查看次数

为什么x86汇编中的64位被分红?

为什么idivx86汇编指令EDX:EAX被给定寄存器除(64位)而其他数学运算(包括乘法)只能在单个输入和输出寄存器上运行?

乘法:

mov eax, 3
imul eax, 5
Run Code Online (Sandbox Code Playgroud)

师:

mov edx, 0
mov eax, 15
mov ebx, 5
idiv ebx
Run Code Online (Sandbox Code Playgroud)

我知道这EDX用于存储余数,但为什么没有单独的指令用于此行为?这对我来说似乎不一致.

x86 assembly

5
推荐指数
2
解决办法
1261
查看次数

标签 统计

assembly ×2

64-bit ×1

c++ ×1

multiplication ×1

x86 ×1