gpt4 book ai didi

javascript - 将两个32bit寄存器中的64bit除以32bit

转载 作者:行者123 更新时间:2023-11-30 06:06:49 26 4
gpt4 key购买 nike

出于教育目的,我正在尝试用 JavaScript 编写一个 x86 模拟器。我已经编写了一个编译器,目前我正在尝试用 JavaScript 编写 x86 模拟器。

然而,我对 DIV 指令有疑问。根据http://siyobik.info/index.php?module=x86&id=72 DIV 通过将 EDX 解释为高 32 位,将 EAX 解释为低 32 位,将 64 位数字作为输入。然后它将这个数字除以 DIV 参数并将结果(如果它不大于 0xFFFFFFFF)放入 EAX,将余数放入 EDX。

由于 JavaScript 不支持 64 位整数,我需要应用一些技巧。但到目前为止我还没有想出有用的东西。

这里有人知道如何使用 32 位算法正确实现吗?

最佳答案

我之前的版本不正确,所以我会重写。

JS中int最大为53位,我们可以利用。

你拿x[63:16] (48 位)和除法。 Res = x[63:16] / y * 16<< 0x01 . Rem = x[63:16] % y * 16 .然后做:Res |= (Rem | x[15:0]) / y

* - x[a:b]表示 x 从 a-th 到 b-th 的位。喜欢X = 0110 , x[3:1] = 011

关于javascript - 将两个32bit寄存器中的64bit除以32bit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3932774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com