knight_21ic 发表于 2018-9-12 22:31 这种技巧不学也罢
收藏0 举报
linqing171 发表于 2018-9-13 09:26 在ARM下,充分利用其CPU内部的桶形移位寄存器,两次移位把低6位清零。 而在8051下,用 and 0xC0只有一条指 ...
i = i >> 6 << 6;复制i = i / 64 * 64;复制i &= ~63; 优化编译结果都是一样的,在 arm 指令集中只要一条指令: 复制bic r0, r0, #63 在 thumb2 指令集中也是一条指令: 复制bic.w r0, r0, #63 在 thumb 指令集中要差一些,要两条指令: 复制movs r3, #63 bics r0, r3
i = i / 64 * 64;复制i &= ~63; 优化编译结果都是一样的,在 arm 指令集中只要一条指令: 复制bic r0, r0, #63 在 thumb2 指令集中也是一条指令: 复制bic.w r0, r0, #63 在 thumb 指令集中要差一些,要两条指令: 复制movs r3, #63 bics r0, r3
i &= ~63; 优化编译结果都是一样的,在 arm 指令集中只要一条指令: 复制bic r0, r0, #63 在 thumb2 指令集中也是一条指令: 复制bic.w r0, r0, #63 在 thumb 指令集中要差一些,要两条指令: 复制movs r3, #63 bics r0, r3
bic r0, r0, #63 在 thumb2 指令集中也是一条指令: 复制bic.w r0, r0, #63 在 thumb 指令集中要差一些,要两条指令: 复制movs r3, #63 bics r0, r3
bic.w r0, r0, #63 在 thumb 指令集中要差一些,要两条指令: 复制movs r3, #63 bics r0, r3
movs r3, #63 bics r0, r3
john_lee 发表于 2018-9-13 16:41 想当然了,其实这个操作并不需要移位,移位的开销反而更高。 以下三种写法:
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
人才类勋章
时间类勋章
等级类勋章
发帖类勋章
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号