判断arm立即数是否合法的小程序
2011-03-31 22:05
302 查看
今天老师布置了课后习题,有一题是判断立即数的,大家都知道,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条件满足,则看是否可以经过偶数位左移得到
满足这两个条件的就是合法的立即数了,不过还是写了一个小程序来判断,看来我还是这么的懒,嘻嘻。
----------------------------------------------------------------------------------
转载我博客文章郑重声明:技术性网站著名原创作者即可转载,商业性网站必须经过我的同意才能转载,否则追究责任——
pang123hui的博客:
博客园http://www.cnblogs.com/pang123hui/
CSDNhttp://blog.csdn.net/pang123hui/
描述:如立即数记作 <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条件满足,则看是否可以经过偶数位左移得到
满足这两个条件的就是合法的立即数了,不过还是写了一个小程序来判断,看来我还是这么的懒,嘻嘻。
#include <stdio.h> /************************************************************ 描述:循环左移函数 输入:val,要判断的立即数 n,要左移的位数(0--15) 返回:循环左移n位后的立即数 ************************************************************/ unsigned int left(unsigned int val, int n) { if (n <0 || n> 15) { return 0xffffffff; } unsigned int rtn; rtn = val << (2 * n); rtn |= (val & (0xffffffff << (32 - 2 * n))) >> (32 - 2 * n); return rtn; } /************************************************************ 描述:判断立即数是否有效 输入:val,要判断的立即数 返回:true,立即数有效 false,立即数无效 ************************************************************/ int Judge(unsigned int val) { int i = 0; for (i = 0; i < 16; i++) { if(left(val, i) <= 0x000000ff ) return 1; } return 0; } int main(void) { int num = 0; while(printf("请输入:"), 1 == scanf("%x", &num)) { if(Judge(num)) { printf("是合法立即数!/n"); } else { printf("非法立即数!/n"); } } return 0; }
----------------------------------------------------------------------------------
转载我博客文章郑重声明:技术性网站著名原创作者即可转载,商业性网站必须经过我的同意才能转载,否则追究责任——
pang123hui的博客:
博客园http://www.cnblogs.com/pang123hui/
CSDNhttp://blog.csdn.net/pang123hui/
相关文章推荐
- 判断arm立即数是否合法的小程序
- ARM---判断合法立即数
- 教你快速判断ARM指令中合法立即数
- .net开发winform程序的时候,得到路径及判断路径是否合法
- 这是判断日期是否合法的程序。相信有助于你。
- ARM指令中怎么判断合法立即数的方法(转载)
- 判断输入的字符串是否为合法IP地址的程序
- 判断IP地址与掩码是否合法程序
- 判断手机号码是否合法(完整实现程序)
- ARM汇编之合法立即数的快速判断方法
- ARM中判断立即数是否有效
- 编写正则表达式,判断给定的是否是一个合法的IP地址。
- 怎样用ASP.NET(C#)程序判断客户端是否安装了.NET Framework
- 关于GetActiveObject,如何判断所取得对象的类型、、、可以用来检测某个程序是否运行
- 判断IOS 数字是否合法,邮箱是否合法
- C程序:如何判断链表是否有环
- 在程序中判断一个文件是否可读的方法
- 经典c程序(0018)----判断一组数(6个)是否为baby-jin
- as3判断XML是否合法
- c#调用外部程序,并判断该程序是否执行完毕