首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

以尽量快以及少的指令完成操作

2013-12-20 
以尽可能快以及少的指令完成操作以尽可能快的速度以及尽可能少的ARM指令完成与下面等同的操作:unsigned in

以尽可能快以及少的指令完成操作
以尽可能快的速度以及尽可能少的ARM指令完成与下面等同的操作:

unsigned int x = ...; // 假定unsigned int为32-bit
// 取x低3字节(即bit0~bit23),且每字节丢弃低3位,然后将每字节剩下的位组成一个15位的新数
unsigned short y = ((x & 0xf80000) >> 19) | 
                   ((x & 0x00f800) >> 11) | 
                   ((x & 0x0000f8) >>  3);

[解决办法]
; 假定r0存有x的值
and r1, r0, #0x000000f8
and r2, r0, #0x0000f800
and r0, r0, #0x00f80000
mov r0, r0, lsr #9
orr r0, r0, r1, lsr #3
orr r0, r0, r2, lsr #6

热点排行