我的一篇演讲幻灯片给出了一个算术溢出的例子,并在ARM芯片上带了一个条件分支标志的主题,引用如下:
大概是为了这个例子,这个地址只能容纳8个字节。因此,在我看来,它似乎是添加1到7 7FFFFFFF提供80000000。我以为80000000还能装进一个8字节的地址。
为什么这是算术溢出?滑梯上走错路了吗?还是我的理解有缺陷?
谢谢你的回复
发布于 2011-06-07 13:31:31
当寄存器不能将结果正确表示为有符号值(溢出到符号位)时,会设置
发布于 2011-06-07 13:34:57
如果符号位已损坏,则会出现溢出。所以你知道你必须调整你的结果。
如果结果不符合此值,您将得到一个进位。(需要比你拥有的更多的数据)。
在过去,您必须为多字节值编写自己的加法和乘法子程序。
发布于 2021-04-09 07:13:38
两个补语的优点是添加和子操作完全相同,因此您不需要对有符号值和无符号值进行不同的说明。
但是,ALU只是处理一个8位数的问题,所以它不知道这些位是否代表有符号或无符号的数字。
考虑两项行动:
原则上,您可以设计一个只带一个标志的ALU,如果您有一点可以告诉它操作是签名的还是未签名的。然后,您将有不同的操作代码进行签名和无符号操作。
https://stackoverflow.com/questions/6265896
复制相似问题