新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 加深對ARM匯編中對stmfd和ldmfd的理解

        加深對ARM匯編中對stmfd和ldmfd的理解

        作者: 時間:2016-11-10 來源:網絡 收藏
        AREASTMFD,CODE,READONLY
        ENTRY
        CODE32
        START
        subsp,sp,#4 ;經過此條語句過后,sp的值由原來的0變為了0xfffffffc
        movr0,#0x1d ;將0x1d賦值給r0寄存器
        movr1,#0x1c;將0x1c賦值給r1寄存器


        stmfdsp!,{r0};將r0中的值壓入堆棧,壓入過程是,由于r0中的值為32位的,首先將sp減去4,將r0中的低八位放入sp這個位置(即fffffff8處放的是0x1d)
        第九位到第十六位放入sp+1的地址即(fffffff9處放的是0x00),將第十七位到第二十四位放入sp+2的位置(fffffffa處放的是0x00),將第二十五位到第三十二位放入
        sp+3的位置(fffffffb處放的是0x00).


        strr1,[sp,#4];將r1中的值壓入堆棧,壓入過程是,由于r1中的值為32位的,將r0中的低八位放入sp+4(fffffffc處放的是0x1c)這個位置
        第九位到第十六位放入sp+5的地址(fffffffd處放的是0x00),將第十七位到第二十四位放入sp+6的位置(fffffffe處放的是0x00),將第二十五位到第三十二位放入
        sp+7的位置(ffffffff處放的是0x00).
        .


        ldmfdsp!,{r2,r3};將堆棧中的內容出棧,出棧過程是,將sp這個位置的值放入r2中的低八位,將sp+1這個位置的值放入r2中的第九
        位到第十六位,將sp+2這個位置的值放入r2中的第十七位到第二十四位,將sp+3這個位置的值放入r2中的第二十
        五位到第三十二位。(即r2中的值為0x0000001d)將sp+4這個位置的值放入r3中的低八位,將sp+5這個位置的值放入r3中的第九位到第十六位,將sp+6這個位置的值放入r3中的第十七位到第二十四位,將sp+4這個位置的值放入r3中的第二十
        五位到第三十二位(即r2中的值為0x0000001c)。同時sp=sp+8。




        bSTART


        END


        關鍵詞: ARM匯編stmfdldmf

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 吕梁市| 临潭县| 陇西县| 平江县| 青冈县| 凤冈县| 龙海市| 那坡县| 彰化县| 盱眙县| 赤壁市| 阳山县| 南郑县| 若尔盖县| 文安县| 盱眙县| 元江| 翁牛特旗| 宝清县| 兴和县| 邯郸县| 邢台市| 新晃| 文昌市| 商都县| 贡嘎县| 奇台县| 九龙县| 固阳县| 正安县| 石楼县| 重庆市| 武义县| 绥德县| 临漳县| 庐江县| 汶上县| 会泽县| 达州市| 板桥市| 刚察县|