【问题标题】:GMP ..binary executionGMP ..二进制执行
【发布时间】:2010-01-27 17:09:13
【问题描述】:

在 GMP 库中......

如何在内部执行整数运算?? 像 6=0110,4=0100..和 6+4= 0110+0100.. 在乘法,除法和其他操作的情况下会发生什么!?? 它如何控制溢出位和其他东西...

【问题讨论】:

标签: internals gmp


【解决方案1】:

大多数基本的多精度例程都是用汇编代码编写的,并利用了特定的 CPU 指令。

对于加法,基本指令是“ADD-with-Carry”。该指令将两个 CPU 寄存器的内容和进位位相加,然后将结果保存在一个寄存器中,如果溢出则设置进位位。要添加两个多精度数,请清除进位位,然后添加每个多精度值中的第一个字(通常是 C“unsigned int”或“unsigned long”),保存结果,并设置进位位为下一个循环。细节在于处理不同大小的输入等。

对于乘法,基本指令“MULT”只是将两个寄存器相乘,并将结果的上半部分存储在一个 CPU 寄存器中,将结果的下半部分存储在另一个 CPU 寄存器中。

要详细了解它是如何在 CPU 上实际完成的,您需要研究 CPU 的指令集。

【讨论】:

    猜你喜欢
    • 2019-09-10
    • 2016-08-28
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 2013-12-02
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多