新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM處理器指令立即尋址的限制

        ARM處理器指令立即尋址的限制

        作者: 時間:2016-11-21 來源:網絡 收藏
        ARM處理器的匯編語言中,對指令語法格式中的常數表達式有這樣的規定:“該常數必須對應8位位圖,即常數是由一個8位的常數循環移位偶數位得到的。”

        給定一個立即數,判斷其是否合法可以分三步:首先將給定的立即數寫成32位二進制的形式;然后看能不能用一個8位的二進制數包括所有含1的部分,如不能則非法;最后看這個8位二進制數能不能循環右移偶數位得到給定的立即數,不能數則非法。

        本文引用地址:http://www.104case.com/article/201611/319517.htm

        0xff=00000000000000000000000011111111:相當于8位二進制11111111循環右移0位得到,合法;

        0x104=00000000000000000000000100000100:相當于8位二進制01000001循環右移2位得到,合法;

        0x101=00000000000000000000000100000001:包含所有1的部分是100000001,無法用一個8位二進制表示,非法;

        0x102=00000000000000000000000100000010:包含所有1的部分是10000001,但10000001只能循環右移奇數位得到給定的數,非法;

        0xfC000002=11111100000000000000000000000010:相當于8位二進制10111111循環右移6位得到,合法。

        0x8000007E=10000000000000000000000001111110:包含所有1的部分是11111101,但10000001只能循環右移奇數位得到給定的數,非法。

        總結:第一,判斷一個數是否符合8位位圖的原則,首先看這個數轉換成二進制后1的個數是否不超過8個,如果不超過8個,再看這n個1(n<=8)是否能同時放到8個二進制位中,如果可以放進去,再看這八個二進制位是否可以循環右移偶數位得到起初被判斷的那個數值,如果可以,則此數值即為符合8位位圖原理,否則,不符合。第二,用12位的編碼來表示一個任意的32位數是不可能的,只能通過循環右移八位二進制數偶數位來得到一部分32位數,其余的無法表示的32位數,只有通過其它途徑獲得了,比如0xffffff00,可以通過0x000000ff按位取反得到。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 保亭| 华容县| 泾川县| 五莲县| 山东省| 台湾省| 陇川县| 承德市| 芜湖市| 十堰市| 兴宁市| 西昌市| 库车县| 天津市| 新乐市| 化隆| 治多县| 重庆市| 楚雄市| 远安县| 寿宁县| 临城县| 呼和浩特市| 绥阳县| 上蔡县| 大同县| 玉溪市| 庐江县| 黎城县| 汉川市| 张家川| 德清县| 富平县| 舒兰市| 安阳县| 南川市| 贡嘎县| 麟游县| 酒泉市| 宽甸| 平罗县|