Javascript 将两个32位寄存器中的64位除以32位

Javascript 将两个32位寄存器中的64位除以32位,javascript,math,assembly,64-bit,Javascript,Math,Assembly,64 Bit,我正试图用JavaScript编写一个x86仿真器,用于教育目的。 我已经编写了一个编译器,目前正在尝试用JavaScript编写x86仿真器 然而,我对DIV指令有一个问题。根据DIV,通过将EDX解释为较高的32位,将EAX解释为较低的32位,将64位数字作为输入。然后将该数字除以DIV参数,并将结果(如果不大于0xFFFFFFFF)放入EAX,剩余部分放入EDX 由于JavaScript不支持64位整数,我需要应用一些技巧。但到目前为止,我还没有想出一些有用的办法 这里有人知道如何用32位

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

然而,我对DIV指令有一个问题。根据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
我认为这是不对的。如果x[63:48]是4,x[15:0]也是4,剩下的是0,那么这会得到4/2+4/2=4,这当然是不正确的。好的,又错了,因为如果x[31:16]=1,你把它除以16,你会得到01@Simon您应该携带上一次操作的剩余部分,仔细阅读