huammm 发表于 2016-5-18 21:01

判断arm立即数是否合法的小程序

今天老师布置了课后习题,有一题是判断立即数的,大家都知道,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条件满足,则看是否可以经过偶数位左移得到

满足这两个条件的就是合法的立即数了,不过还是写了一个小程序来判断,看来我还是这么的懒,嘻嘻。

kbh2006@163.com 发表于 2016-5-19 09:25

gfshao 发表于 2025-9-17 08:17

学习进步积分!

crazyman 发表于 2025-11-30 08:49

:):):):):(:(:(:(:(:(:(:(:(:(

冰薄荷 发表于 2026-1-31 21:16

yikao22 发表于 2026-4-25 08:23

合法的小程序:)

yikao22 发表于 2026-5-23 08:13

合法的小程序

7426笨蛋 发表于 2026-5-26 01:10

还整汇编啊,可以

yikao33 发表于 2026-5-28 08:17

这么的懒:)

bailuweixi 发表于 2026-5-28 19:42

👍       👍    👍   👍👍      
页: [1] 2
查看完整版本: 判断arm立即数是否合法的小程序