新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ARM指令中的內(nèi)存訪問指令的總結

ARM指令中的內(nèi)存訪問指令的總結

作者: 時間:2016-11-20 來源:網(wǎng)絡 收藏
內(nèi)存訪問指令

LDR,STR,LDM,STM

本文引用地址:http://m.butianyuan.cn/article/201611/318731.htm

LDR:表示從內(nèi)存中讀取數(shù)據(jù)到寄存器當中,如ldr r0,[r2];表示從r2指向的內(nèi)存單元讀取數(shù)據(jù)保存到r0當中

STR:表示把寄存器當中的數(shù)據(jù)保存到內(nèi)存單元當中,如str r1,[r2];表示把r1中的值保存到地址為r2指向的內(nèi)存單元當中

LDM/STM是指內(nèi)存訪問指令,用一條指令就可以讀取多個數(shù)據(jù),格式如下

LDM{cond} {!} {^}

STM{cond} {!} {^}

其中cond代表條件碼

1.ia (incrementafter):事后遞增方式

2.ib (incrementbefore):事先遞增方式

3.da(decrementafter):事后遞減方式

4.db(decrementbefore):事先遞減方式

rn保存內(nèi)存單元的地址,如果加上!,表示,使用后更新,等于下一個內(nèi)存單元的地址

表示寄存器列表,最后的^表示如果register_list當中有pc寄存器,它表示指令執(zhí)行后,將spsr的值自動到cpsr當中,常用于中斷函數(shù)的返回;如果register_list當中沒有pc,^表示操作的是用戶模式下的寄存器,而不是當前特權模式下的寄存器.指令中的對應關系,編號低的寄存對應內(nèi)存中低地址的單元,高編號的寄存器對應高內(nèi)存地址.

irq_handler:sublr, lr, #4               ;計算返回地址stmdbsp!, {r0-r12, lr}      ;事前遞減,!使得sp = sp -14*4,lr保存在高地址當中sp, r0保存在低地址當中 sp - 14*4ldrr2, = int_handler        ;中斷處理函數(shù)blr2                        ;真實中斷處理ldrlr, = int_return;        ;從中斷中返回irq_retrun:ldmiasp!, {r0-r12, lr}^     ;^將spsr拷貝到cpsr,!使得sp = sp + 14*4,r0中的值是低地下中的sp,lr中的得到是高地址sp +14*4指向的值


評論


技術專區(qū)

關閉