|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
今天老师布置了课后习题,有一题是判断立即数的,大家都知道,arm里的立即数并非都是合法的。
描述:如立即数记作 <immediate> ,8位常数记作immed_8,4位的循环右移值记作rotate_imm,有效的立即数是由一个8位的立即数循环左移偶数位得到,则有效立即数immediate可表示成:
<immediate> = immed_8循环右移( 2 * rotate_imm )
例:有效立即数 0x0000F200,0x00110000, 0x00012800
无效立即数 0x1010, 0x00102, 0xFF1000
显然,对于8位立即数都是有效的。
其实从定义上判断一个数是不是立即数也很简单的:
1.看所有的bit位为1的是否在一个字节中
2.若1条件满足,则看是否可以经过偶数位左移得到
满足这两个条件的就是合法的立即数了,不过还是写了一个小程序来判断,看来我还是这么的懒,嘻嘻。 |
|