freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[高等教育]第二講arm指令集(參考版)

2025-01-24 21:12本頁面
  

【正文】 。 ?返回時(shí): MOVS PC, R14 斷點(diǎn)中斷指令 ?BKPT (BreakPoinT)指令產(chǎn)生軟件斷點(diǎn)中斷,可用于程序的調(diào)試。 ?將 CPSR保存到 SPSR_svc。 SWI ?SWI{cond} immed_24, ? 操作系統(tǒng)在 SWI的異常處理程序中提供相應(yīng)的系統(tǒng)服務(wù),指令中 24位的立即數(shù)指定用戶程序調(diào)用系統(tǒng)例程的類型,相關(guān)參數(shù)通過通用寄存器傳遞。如果協(xié)處理器不能成功的執(zhí)行該操作,將產(chǎn)生未定義的指令異常中斷 ? MRC p10, 3, R3, CR3, CR4, 6 ; 指令將協(xié)處理器 p10寄存器中的數(shù)據(jù)傳送到 ARM寄存器R3中,其中 R3是存放目標(biāo)操作數(shù)的 ARM寄存器,CR3和 CR4是作為目標(biāo)寄存器的協(xié)處理器寄存器,操作碼 1為 3,操作碼 2為 6 異常產(chǎn)生指令 ?ARM處理器所支持的異常產(chǎn)生指令有兩條: ?軟中斷指令 SWI ?斷點(diǎn)調(diào)試指令 BKPT(用于 ARM V5及以上的版本) 軟中斷指令 ?SWI(SoftWare Interrupt)指令用于產(chǎn)生軟件中斷,它將處理器置于監(jiān)控模式 (SVC),從地址 0x08開始執(zhí)行指令。如果協(xié)處理器不能成功的執(zhí)行該操作,將產(chǎn)生未定義的指令異常中斷。 op c od e 2 為協(xié)處理器將執(zhí)行操作的第二操作碼。 C p _ num 為協(xié)處理器的編碼。 CRn 為存放第 1 個(gè)操作數(shù)的協(xié)處理器寄存器。當(dāng) c o nd 忽略時(shí)指令為無條件執(zhí)行。 ARM寄存器與協(xié)處理器寄存器數(shù)據(jù)傳輸指令 ? ARM寄存器與協(xié)處理器寄存器數(shù)據(jù)傳輸指令用來實(shí)現(xiàn) ARM通用寄存器與協(xié)處理器寄存器之間的數(shù)據(jù)傳輸,共有兩條: 1. ARM寄存器到協(xié)處理器寄存器的數(shù)據(jù)傳送指令 MCR 2. 協(xié)處理器寄存器到 ARM寄存器的數(shù)據(jù)傳送指令 MRC。 2.協(xié)處理器數(shù)據(jù)存儲(chǔ)指令 STC ?STC指令將 協(xié)處理器的寄存器中的數(shù)據(jù)寫入到一系列連續(xù)的內(nèi)存單元 中,并由協(xié)處理器來決定傳輸?shù)淖謹(jǐn)?shù)。 1.協(xié)處理器數(shù)據(jù)加載指令 LDC ?LDC指令用于將 一系列連續(xù)的內(nèi)存單元的數(shù)據(jù)讀取到協(xié)處理器的寄存器中 ,并由協(xié)處理器來決定傳輸?shù)淖謹(jǐn)?shù)。 ?需要注意的是,匯編語法格式中的 L是表示傳輸?shù)臄?shù)據(jù)為長整數(shù),其對(duì)應(yīng)指令編碼中的“ N”。(可選) 協(xié)處理器加載 /存儲(chǔ)指令 ?協(xié)處理器的加載 /存儲(chǔ)指令可以用來實(shí)現(xiàn)ARM處理器與協(xié)處理器之間的數(shù)據(jù)傳輸,共有兩條:協(xié)處理器數(shù)據(jù)加載指令 LDC和協(xié)處理器數(shù)據(jù)存儲(chǔ)指令 STC。 ? opcode1為協(xié)處理器將執(zhí)行操作的第一操作碼。 ? CRm為存放第 2個(gè)源操作數(shù)的協(xié)處理器寄存器。 ? CRd為目標(biāo)寄存器的協(xié)處理器寄存器。 ? CDP{cond} Cp_num,opcode_1,CRd,CRn,CRm, {opcode_2} CDP ? cond為指令執(zhí)行的條件碼。ARM微處理器最多可支持 16個(gè)協(xié)處理器,用于各種協(xié)處理操作。 ? R( bit[22])為 0時(shí),寫 CPSR; R( bit[22])為 1時(shí),寫 SPSR。 MSR {cond} CPSR_fields, operand2 MSR {cond} SPSR_fields, operand2 ? fields設(shè)置狀態(tài)寄存器中需要操作的位域。這是 程序獲得程序狀寄存器 PSR數(shù)據(jù)的唯一方法。 ?這類指令可以用來修改 CPSR,通常是通過“ 讀取 修改 寫回 ”的操作序列來實(shí)現(xiàn)。 字?jǐn)?shù)據(jù)交換指令 ?SWP是對(duì)字?jǐn)?shù)據(jù)操作指令,用于將一個(gè)寄存器 Rn為地址的內(nèi)存字?jǐn)?shù)據(jù)單元的內(nèi)容讀取到一個(gè)寄存器 Rd中,同時(shí)將另一個(gè)寄存器 Rm的內(nèi)容寫入到該內(nèi)存單元中。 BLX ?( 2)寄存器的內(nèi)容作為目標(biāo)地址 ?這種形式的 BLX指令匯編語法格式如下: ?BLX{cond} Rm BLX ? BLX指令跳轉(zhuǎn)到 Rm指定的地址執(zhí)行程序,如果 Rm的 bit[0]為 1,則跳轉(zhuǎn)時(shí)自動(dòng)將 CPSR中的標(biāo)志位 T置位,目標(biāo)地址的代碼為 Thumb代碼;如果 Rm的 bit[0]為 0,則跳轉(zhuǎn)時(shí)自動(dòng)將 CPSR中的 T標(biāo)志位清 0,目標(biāo)地址的代碼為 ARM代碼。 BLX ( 1)由程序標(biāo)號(hào)給出目標(biāo)地址 ?這種形式的 BLX指令匯編語法格式如下: ?BLX target_address BLX ? 目標(biāo)地址 target_address的計(jì)算方法:先對(duì)指令中定義的有符號(hào) 24位偏移量用符號(hào)位擴(kuò)展為 32位,并將該 32位數(shù)左移 2位,然后將其加到程序計(jì)數(shù)器 PC中, H位( bit[24])加到目標(biāo)地址的第 1位( bit[1]),目標(biāo)地址總是 Thumb指令。 指令的匯編語法格式如下: ? B{cond} Rm Thumb與 ARM的切換選擇 ? BX指令跳轉(zhuǎn)到 Rm指定的地址執(zhí)行程序,如果 Rm的bit[0]為 1,則跳轉(zhuǎn)時(shí)自動(dòng)將 CPSR中的標(biāo)志位 T置位,目標(biāo)地址的代碼為 Thumb代碼;如果 Rm的 bit[0]為 0,則跳轉(zhuǎn)時(shí)自動(dòng)將 CPSR中的 T標(biāo)志位清 0,目標(biāo)地址的代碼為 ARM代碼。 ? BL跳轉(zhuǎn)指令編碼中 signed_immed_24的含義同 B指令。 當(dāng)有 L時(shí),指令將下一條指令地址保存到 LR寄存器中;當(dāng)無 L時(shí)同 B指令僅執(zhí)行跳轉(zhuǎn),當(dāng)前 PC寄存器的值將不會(huì)保存到 LR寄存器中。 帶鏈接的分支指令 BL ? 帶鏈接的分支指令 BL可以實(shí)現(xiàn)跳轉(zhuǎn)到指定的地址執(zhí)行程序,同時(shí) BL指令還將程序計(jì)數(shù)器 PC的值保存到 LR寄存器中 。 指令的匯編語法格式如下: ? B{cond} target_address 分支指令 B ?在指令的匯編語法中 target_address這個(gè)目標(biāo)地址的計(jì)算方法是:將指令中的 24位帶符號(hào)的補(bǔ)碼立即數(shù)擴(kuò)展為 32位;將此 32位數(shù)左移兩位將得到的值寫入到程序計(jì)數(shù)器 PC中,即跳轉(zhuǎn)到目標(biāo)地址。 PC寫入地址 ?通過向程序計(jì)數(shù)器 PC寫入跳轉(zhuǎn)地址值,可以實(shí)現(xiàn)在 4GB的地址空間中的任意跳轉(zhuǎn) ,在跳轉(zhuǎn)之前結(jié)合使用 MOV LR, PC等類似指令,能夠保存程序的返回地址值,從而實(shí)現(xiàn)在 4GB連續(xù)地址空間的子程序調(diào)用 。 ARM分支指令 分支指令用于實(shí)現(xiàn)程序流程的跳轉(zhuǎn),在ARM程序中有兩種方法可以實(shí)現(xiàn)程序流程的跳轉(zhuǎn): 1. 使用專門的分支指令。 ( 3) SMULL ?SMULL{cond}{S} RdLo, RdHi, Rm, Rs ? SMULL指令實(shí)現(xiàn)兩個(gè) 32位有符號(hào)數(shù)的乘積,乘積結(jié)果的高 32位存放到一個(gè) 32位的寄存器的 RdHi,乘積結(jié)果的低 32位存放到另一個(gè) 32位的寄存器的RdLo;如果指令包含后綴“ S”,則根據(jù)操作結(jié)果更新 CPSR中的相應(yīng)條件標(biāo)志位。 2. 64位乘法指令 ( 1) UMULL ?UMULL{cond}{S} RdLo, RdHi, Rm, Rs ? UMULL指令實(shí)現(xiàn) 兩個(gè) 32位無符號(hào)數(shù)的乘積 ,乘積結(jié)果的高 32位存放到一個(gè) 32位的寄存器的 RdHi,乘積結(jié)果的低 32位存放到另一個(gè) 32位的寄存器的RdLo;如果指令包含后綴“ S”,則根據(jù)操作結(jié)果更新 CPSR中的相應(yīng)條件
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1