如果我从整数1
开始并重复LSL
寄存器中的值,一旦整数溢出,预期的行为是什么?
mov r0,#1 /* 00000000000000000000000000000001 */
lsl r0,#1 /* 00000000000000000000000000000010 */
/* repeat 31 times */
lsl r0,#1 /* 10000000000000000000000000000000 */
在下一个LSL上,应该是程序:
答案 0 :(得分:3)
从v6-M参考手册的A2.2.1节“整数算术”,“移位和旋转操作”小节:
(LSL)将位串的每个位移动指定的位数。零点转入 位串的右端。从位串的左端移位的位是 丢弃,除了最后一个这样的位可以作为进位输出产生。
因此它变为0并且设置了进位标志。