×

ARM的合法立即数与非法立即数

消耗积分:1 | 格式:rar | 大小:0.33 MB | 2017-11-30

分享资料个

ARM指令的立即数,要求立即数以“#”为前缀,对于以十六进制表示的立即数,还要求在“#”后加上“0x”或“&”。合法的立即数与非法的立即数(教材P158)在Arm处理器中,立即数必须是对应8位位图格式,即立即数是由一个8bit的常数在16位或32位的寄存器中循环移动(向左或向右都行)偶数位得到的。合法的立即数必须能够找到得到它的那个常数,否则这个立即数就是非法的。例如:0x3F8是合法的,把它写成二进制形式为:001111111000b, 因为:它是用一个8bit的常数0xFE(11111110b)在16位的寄存器中循环向左移动2位就可以得到0x3F8 ,见下图的:
ARM的合法立即数与非法立即数 
  判断一个立即数是否合法的办法:(1)首先把这个数用二进制表示出来,然后看这个数中“1”的最大间隔是多少,要看两次,一次是顺序看,一次是循环看,循环看是把16位或32寄存器的首尾连起来,越过首尾来看,两次中如果最大间隔都大于8(包含首尾的两个1),那这个数肯定是非法的。如果有一次小于等于8则有可能是合法的,可以进行下一步继续判断:(2)此时又分为两种情况,(A)如果顺序看时1的最大间隔等于8,此时可以看看,这个数最高位1的前面或者最低位1的后面是否有偶数个0,只要一种情况下有,这个数就是合法的。(B)如果循环看时1的最大间隔小于等于8,此时可以看看,循环看时,两端得到的间隔个数是否有一个为偶数,如果有一个是偶数,这个数就是合法的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !