这种简单的指令, 怎么可能有 BUG?
看看楼主的运算
ssat r0,#31,r0,lsl #1
int i = examfunc(0x7F221145);
这里, 首先指令里使用的是 LSL 操作. 0x7F221145 经过 lsl #1 后为 0xFE44228A. 接下来执行 SSAT 运算. 注意 SSAT 将 R0 的值当有符号数处理. 0xFE44228A 也就是 -0x1BBDD76. 其结果当然没有溢出, 所以结果还是这个值.
如果要看到楼主的结果, 应该使用 USAT 指令! |