新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM匯編程序中立即數(shù)的合法性

        ARM匯編程序中立即數(shù)的合法性

        作者: 時(shí)間:2016-11-21 來源:網(wǎng)絡(luò) 收藏
        ARM匯編中立即數(shù)的構(gòu)成規(guī)則:必須是一個(gè)8位的二進(jìn)制數(shù),前面補(bǔ)上24位二進(jìn)制0,擴(kuò)展為32位;然后將這個(gè)32位的擴(kuò)展數(shù)首尾相連循環(huán)偶數(shù)位得到。
        給定一個(gè)立即數(shù),判斷其是否合法可以分三步:首先將給定的立即數(shù)寫成32位二進(jìn)制的形式;然后看能不能用一個(gè)8位的二進(jìn)制數(shù)包括所有含1的部分,如不能則非法;最后看這個(gè)8位二進(jìn)制數(shù)能不能循環(huán)右移偶數(shù)位得到給定的立即數(shù),不能數(shù)則非法。舉例如下:
        0xff=00000000 00000000 00000000 11111111:相當(dāng)于8位二進(jìn)制11111111循環(huán)右移0位得到,合法;
        0x104=00000000 00000000 00000001 00000100:相當(dāng)于8位二進(jìn)制01000001循環(huán)右移2位得到,合法;
        0x101=00000000 00000000 00000001 00000001:包含所有1的部分是100000001,無法用一個(gè)8位二進(jìn)制表示,非法;
        0x102=00000000 00000000 00000001 00000010:包含所有1的部分是10000001,但10000001只能循環(huán)右移奇數(shù)位得到給定的數(shù),非法;
        0xfC000002 =11111100 00000000 00000000 00000010:相當(dāng)于8位二進(jìn)制10111111循環(huán)右移6位得到,合法。
        0x8000007E=10000000 00000000 00000000 01111110:包含所有1的部分是11111101,但10000001只能循環(huán)右移奇數(shù)位得到給定的數(shù),非法。


        關(guān)鍵詞: ARM匯編程序立即

        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 兴业县| 元阳县| 洛隆县| 浪卡子县| 亳州市| 阳西县| 犍为县| 东乡县| 财经| 棋牌| 苏州市| 通河县| 高平市| 许昌市| 汝城县| 漳州市| 松江区| 维西| 从江县| 南昌县| 怀仁县| 台北市| 普宁市| 无锡市| 灵石县| 德庆县| 巴林右旗| 健康| 漯河市| 青海省| 油尖旺区| 武冈市| 南木林县| 新沂市| 莱西市| 台山市| 华宁县| 赫章县| 玛曲县| 谢通门县| 沙田区|