如何在任何编译器中实现int?

时间:2018-09-05 17:11:38

标签: int compiler-construction

在64位处理器中,一次处理64位数据。因此,当要执行任何算术运算时,都使用 ACCUMULATOR (也是64位)在 ALU 中完成。

但是int的大小在大多数情况下超过2个字节。 如何实现2字节整数(算术运算)?

1 个答案:

答案 0 :(得分:-1)

当然,基本思想是二进制数。但是,有许多细节使事情变得复杂。这取决于硬件和编译器。

我使用了在这里提到的每种方式表示整数的编译器。

表示事物的一种可能方法是使最大二进制整数成为可能。使用64位,并取回1的符号,您将得到2乘以64的幂减去1,或者稍微超过1.8 x 10 ^ 19。

如果要添加和减去,则可以。但是乘法很乏味,因为您需要为每个位做一个乘法。浮动协处理器可以为您提供帮助。

某些硬件将支持有趣的功能,因此利用它很有用。例如,某些CPU芯片将支持二进制编码的十进制。

https://en.wikipedia.org/wiki/Binary-coded_decimal

如果您足够大,可以记住Z80,它是我使用的第一个配备BCD的CPU。

https://en.wikipedia.org/wiki/Zilog_Z80

这意味着您只需要在4位级别上进行二进制填充,因为十进制数的每个数字都与其他数字分开设置。如果硬件直接支持它,则可以避免编写代码以在整数和十进制之间转换所有64位。效率不高。如果使用64位,然后将1删除,则只能获得15位数字。

加,减都很容易。乘法成为在二进制中实现逐位乘法的问题,然后将大于10的结果包含进位。

不同的硬件将以不同的方式支持事物。这里有一个大端与小端的问题。

https://chortle.ccsu.edu/AssemblyTutorial/Chapter-15/ass15_3.html

深奥的硬件上还有许多其他可能性。