精品偷拍一区二区三区,亚洲精品永久 码,亚洲综合日韩精品欧美国产,亚洲国产日韩a在线亚洲

  • <center id="usuqs"></center>
  • 
    
  • LDMFD和STMFD

    LDMFD和STMFD
    其他人氣:928 ℃時間:2020-04-07 20:49:15
    優(yōu)質(zhì)解答
    指令STMFD和LDMFD分析;
    根據(jù)ATPCS規(guī)則,我們一般使用FD(Full Descending)類型的數(shù)據(jù)棧!所以經(jīng)常使用的指令就有STMFD和LDMFD,
    通過ARM對于棧操作和批量Load/Store指令尋址方式,可以知道指令STMFD和LDMFD的地址計算方法:
    STMFD指令的尋址方式為事前遞減方式(DB)
    而DB尋址方式實際內(nèi)存地址為:
    start_address = Rn - (Number_Of_Set_Bits_In(register_list)*4)
    end_address = Rn - 4
    STM指令操作的偽代碼:
    if ConditionPassed(cond) then
    address = start_address
    for i = 0 to 15
    if register_list[i] == 1
    Memory[address] = Ri
    address = address + 4
    有上面兩個偽代碼可以得出 STMFD SP!,{R0-R7,LR} 的偽代碼如下:
    SP = SP - 9×4;
    address = SP;
    for i = 0 to 7
    Memory[address] = Ri;
    address = address + 4;
    Memory[address] = LR;
    LDMFD指令的尋址方式為事后遞增方式(IA)
    IA內(nèi)存的實際地址的偽代碼
    start_address = Rn
    end_address = Rn + (Number_of_set_bits_in(register_list)*4) - 4
    LDM指令操作的偽代碼(未考慮PC寄存器):
    if ConditionPassed(cond) then
    address = start_address
    for i = 0 to 15
    if register_list[i] == 1
    Ri = Memory[address,4]
    address = address + 4
    所以LDMFD SP!,{R0-R7,PC}^ (;恢復(fù)現(xiàn)場,異常處理返回)偽代碼是:
    address = SP;
    for i = 0 to 7
    Ri = Memory[address ,4]
    address = address + 4;
    SP = address;
    我來回答
    類似推薦
    請使用1024x768 IE6.0或更高版本瀏覽器瀏覽本站點,以保證最佳閱讀效果。本頁提供作業(yè)小助手,一起搜作業(yè)以及作業(yè)好幫手最新版!
    版權(quán)所有 CopyRight © 2012-2024 作業(yè)小助手 All Rights Reserved. 手機版