ARM组件中MUL的32位限制

时间:2016-10-23 06:17:30

标签: assembly arm keil

在ARM程序集中,每个寄存器可以包含32位/ 1个字的信息。这就是为什么当你试图存储一个大于255的值时它会给你一个错误

然而,MUL指令似乎没有这个限制。您可以将两个寄存器相乘,例如每个寄存器的值为255,并将结果存储在第三个寄存器中而不会出现任何错误。这是怎么发生的?目标寄存器是否不能存储超过255的值?

1 个答案:

答案 0 :(得分:1)

32位的最大大小为0xFFFFFFFF(大约40亿),所以0xFF(255)乘以0xFF是0xFE01(65025),远小于40亿。

你确实提出了一个有趣的话题,即你不能在没有溢出的情况下乘以0xFFFFFFFF x 0xFFFFFFFF。我不相信"它会给你一个错误",它只会截断结果。