算术溢出与算术运算

egg*_*egs 22 math hex

我的一个演讲幻灯片给出了一个算术溢出的例子,并在ARM芯片上进行了条件分支标志的主题,引用如下:

  • V(溢出) - 7FFFFFFF + 1
  • C(进位) - FFFFFFFF + 1

据推测,为了示例,地址只能容纳8个字节.所以对我来说,似乎喜欢添加1到7FFFFFFF给出80000000.我认为80000000仍然适合8字节地址.

为什么这是算术溢出?幻灯片上的方法是错误的吗?或者我的理解是否有缺陷?

感谢您的回复

Set*_*eth 38

  • 当寄存器无法正确表示结果为有符号值(溢出到符号位)时,溢出标志置位.
  • 当寄存器无法将结果正确表示为无符号值(无需符号位)时,将设置进位标志.


Too*_*the 6

如果符号位已损坏,则会出现溢出.所以你知道你必须调整你的结果.

如果结果不符合此值,则会得到一个进位.(需要比你更多的比特).

在过去,您必须为多字节值编写自己的加法和乘法子程序.

  • 不仅仅是在过去。想象一下,您必须在没有 128 位寄存器的 64 位架构上使用 128 位数字。 (2认同)