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

正文內(nèi)容

arm組合語(yǔ)言程式設(shè)計(jì)-免費(fèi)閱讀

  

【正文】 作業(yè)系統(tǒng)在 SWI的例外處理程式中提供相應(yīng)的系統(tǒng)服務(wù),指令中 24位元的立即數(shù)指定用戶程式使用系統(tǒng)常式的類型,相關(guān)參數(shù)通過通用暫存器傳遞,當(dāng)指令中 24位元的立即數(shù)被忽略時(shí),用戶程式使用系統(tǒng)常式的類型由通用暫存器 R0的內(nèi)容決定,同時(shí),參數(shù)通過其他通用暫存器傳遞。 ? MCR指令用於將 ARM處理器暫存器中的資料般移到輔助運(yùn)算器暫存器中 ,若輔助運(yùn)算器不能成功完成操作,則產(chǎn)生未定義指令例外。其中輔助運(yùn)算器操作碼 1和輔助運(yùn)算器操作碼 2為輔助運(yùn)算器將要執(zhí)行的操作,目的暫存器和來(lái)源暫存器均為輔助運(yùn)算器的暫存器,指令不涉及 ARM處理器的暫存器和記憶體。 ? 操作範(fàn)例: MOV R0, R1, ROR2 ;將 R1中的內(nèi)容迴圈右移兩位元後般移到 R0中。其中,運(yùn)算元可以是通用暫存器,也可以是立即數(shù)( 0~ 31)。 ? 指令範(fàn)例: SWPB R0, R1, [R2] ;將 R2所指向的記憶體中的位元組資料般移到 R0, R0的高 24位清零,同時(shí)將 R1中的低 8位元資料般移到 R2所指向的存儲(chǔ)單元。 ? 表示傳入或傳出的是用戶模式下的暫存器,而不是當(dāng)前模式下的暫存器。 STRH R0, [R1,# 8] ;將暫存器 R0中的半字資料寫入以 R1+ 8為位址的記憶體中。 STR R0, [R1,# 8] ;將 R0中的字資料寫入以 R1+ 8為位址的記憶體中。 ? 該指令通常用於從記憶體中讀取 16位元的半字資料到通用暫存器,然後對(duì)資料進(jìn)行處理。 LDR R0, [R1, R2, LSL# 2]! ;將記憶體位址為 R1+ R24的字資料讀入暫存器 R0,並將新位址 R1+ R24寫入 R1。當(dāng)程式計(jì)數(shù)器 PC作為目的暫存器時(shí),指令從記憶體中讀取的字資料被當(dāng)作目的地址,從而可以實(shí)現(xiàn)程式流程的跳移。該指令一般用在以下幾種情況: ? 當(dāng)需要改變程式狀態(tài)暫存器的內(nèi)容時(shí),可用 MRS將程式狀態(tài)暫存器的內(nèi)容讀入通用暫存器,修改後再寫回程式狀態(tài)暫存器。其中,運(yùn)算元 1和運(yùn)算元 2均為 32位元的無(wú)符號(hào)數(shù)。其中,運(yùn)算元 1和運(yùn)算元 2均為 32位元的有符號(hào)數(shù)或無(wú)符號(hào)數(shù)。運(yùn)算元 1應(yīng)是一個(gè)暫存器,運(yùn)算元 2可以是一個(gè)暫存器,被移位的暫存器,或一個(gè)立即數(shù)。運(yùn)算元 1應(yīng)是一個(gè)暫存器,運(yùn)算元 2可以是一個(gè)暫存器,被移位的暫存器,或一個(gè)立即數(shù)。 ? 運(yùn)算元 1應(yīng)是一個(gè)暫存器,運(yùn)算元 2可以是一個(gè)暫存器,被移位的暫存器,或一個(gè)立即數(shù)。 ? 指令範(fàn)例: SUB R0, R1, R2 ; R0 = R1 R2 SUB R0, R1, 256 ; R0 = R1 256 SUB R0, R2, R3, LSL1 ; R0 = R2 (R3 1) 47 ARM指令集 資料處理指令 SBC指令 ? SBC指令的語(yǔ)法為: ? SBC {條件 }{S} 目的暫存器,運(yùn)算元 1,運(yùn)算元 2 ? SBC指令用於把運(yùn)算元 1減去運(yùn)算元 2,再減去CPSR中的 C條件旗標(biāo)位元的反碼,並將結(jié)果存放到目的暫存器中。 ? 指令範(fàn)例: ?TEQ R1, R2 ;將暫存器 R1的值與暫存器 R2的值按位元互斥,並根據(jù)結(jié)果設(shè)定 CPSR的旗標(biāo)位元 44 ARM指令集 資料處理指令 ADD指令 ? ADD指令的語(yǔ)法為: ? ADD {條件 }{S} 目的暫存器,運(yùn)算元 1,運(yùn)算元 2 ? ADD指令用於把兩個(gè)運(yùn)算元相加,並將結(jié)果存放到目的暫存器中。該指令進(jìn)行一次減法運(yùn)算,但不存儲(chǔ)結(jié)果,只更改條件旗標(biāo)位元。 ? 算術(shù)邏輯運(yùn)算指令 ? 算術(shù)邏輯運(yùn)算指令完成常用的算術(shù)與邏輯的運(yùn)算,該類指令不但將運(yùn)算結(jié)果保存在目的暫存器中,同時(shí)更新 CPSR中的相應(yīng)條件旗標(biāo)位元。 ? 它是 24 位元有符號(hào)數(shù),左移兩位元後有符號(hào)擴(kuò)充為 32 位,表示的有效偏移為 26 位 (前後 32MB的位址空間 )。 ? MOV LR, PC ? 等類似指令,可以保存將來(lái)的返回位址值,從而實(shí)現(xiàn)在 4GB連續(xù)的線性位址空間的副程式使用。 ? 同時(shí),根據(jù)堆疊的生成方式,又可以分為遞增堆疊( Ascending Stack)和遞減堆疊( Descending Stack),當(dāng)堆疊由低位址向高位址生成時(shí),稱為遞增堆疊,當(dāng)堆疊由高位址向低位址生成時(shí),稱為遞減堆疊。 ? 在第三條指令中,以暫存器 R1的內(nèi)容作為運(yùn)算元的有效位址,從而取得運(yùn)算元存入暫存器 R0中,然後, R1的內(nèi)容自增 4個(gè)位元組。以下指令: ? 該指令的執(zhí)行效果是將暫存器 R1和 R2的內(nèi)容相加,其結(jié)果存放在暫存器 R0中。 ? Thumb狀態(tài)的 SP映射到 ARM狀態(tài)的 R13。 ? 大多數(shù)的 Thumb資料處理指令的目的暫存器與其中一個(gè)來(lái)原暫存器相同。 ? 進(jìn)入 Thumb狀態(tài)。 F置 1則禁止 FIQ中斷。 8 ARM暫存器 9 程式狀態(tài)暫存器 (Program Status Register ) ? 有一個(gè) Current Program Status Register (CPSR) ? 在所有處理器模式下都可以存取當(dāng)前的程式狀態(tài)暫存器 CPSR。 ? 暫存器 R8~R12各有兩組實(shí)體暫存器:一組為 FIQ模式,另一組為除了 FIQ以外的所有模式。 ? 6個(gè)程式狀態(tài)暫存器 ? 用以標(biāo)識(shí) CPU的工作狀態(tài)及程式的執(zhí)行狀態(tài),均為 32位元,目前只使用了其中的一部分。 3 ARM微處理器的指令 ? ARM兩種指令集 ? ARM指令 ? 為 32位元的長(zhǎng)度, ? Thumb指令 ? 為 16位元長(zhǎng)度。 ? 連續(xù)存取資料 ? 可用載入 /存儲(chǔ)指令連續(xù)傳輸資料,以提高資料的傳輸效率。 ? 當(dāng)處理器工作在使用者模式時(shí),正在執(zhí)行的程式不能存取某些被保護(hù)的系統(tǒng)資源,也不能改變模式,除非例外 (exception)發(fā)生。 ? 2)分組暫存器 R8~R14 ? R8~ R14是分組暫存器。 ? 暫存器 R13通常用做堆疊指標(biāo),稱為 SP( Stack Pointer),每種例外模式都有自己的 R13。當(dāng)例外出現(xiàn)時(shí)改變控制位元。 11 PSR Mode位元與可使用暫存器 12 ARM和 Thumb之間狀態(tài)的切換 ? ARM處理器可在兩種工作狀態(tài)之間切換。 13 Thumb指令及應(yīng)用 ? Thumb指令集是 ARM指令集的一個(gè)子集,允許指令編碼為 16位元的長(zhǎng)度。每一種特權(quán)模式都有一組 SP,LR和 SPSR。例如以下指令: ? 在以上兩條指令中,第二個(gè)源運(yùn)算元即為立即數(shù),要求以 “ # ” 為首碼,對(duì)於以十六進(jìn)位表示的立即數(shù),還要求在 “ # ” 後加上 “ 0x” 或 “ amp。變址定址方式常用於存取某基底位址附近的位址單元。 LDMIA R0, {R1, R2, R3, R4} ; R1←[R0] ; R2←[R0 + 4] ; R3←[R0 + 8] ; R4←[R0 + 12] 28 ARM指令的定址方式 相對(duì)定址 ? 與基址變址定址方式相類似,相對(duì)定址以程式計(jì)數(shù)器 PC的當(dāng)前值為基底位址,指令中的位址標(biāo)號(hào)作為偏移量,將兩者相加之後得到運(yùn)算元的有效位址。 31 ARM指令集 跳移指令 ? 跳移指令用於實(shí)現(xiàn)程式流程的跳移,在 ARM程式中有兩種方法可以實(shí)現(xiàn)程式流程的跳移: ? 使用專門的跳移指令。 32 ARM指令集 跳移指令 B指令 ? B指令的語(yǔ)法為: ? B{條件 } 目標(biāo)位址 ? B指令是最簡(jiǎn)單的跳移指令。同時(shí),副程式的返回可以通過將暫存器 R14值複製到 PC中來(lái)完成。與 MOV指令不同之處是在般移之前按位被取反了,即把一個(gè)被取反的值般移到目的暫存器中。 ? 運(yùn)算元 1是要測(cè)試的資料,而運(yùn)算元 2是一個(gè)位遮罩,該指令一般用來(lái)測(cè)試是否設(shè)定了特定的位。 ? 以下指令序列完成兩個(gè) 128位數(shù)的加法,第一個(gè)數(shù)由高到低存放在暫存器 R7~ R4,第二個(gè)數(shù)由高到低存放在暫存器 R11~ R8,運(yùn)算結(jié)果由高到低存放在暫存器 R3~ R0: ADDS R0, R4, R8 ; 加低端的字 ADCS R1, R5, R9 ; 加第二個(gè)字,帶進(jìn)位 ADCS R2, R6, R10 ; 加第三個(gè)字,帶進(jìn)位 ADC R3, R7, R11 ; 加第四個(gè)字,帶進(jìn)位 46 ARM指令集 資料處理指令 SUB指令 ? SUB指令的語(yǔ)法為: ? SUB {條件 }{S} 目的暫存器,運(yùn)算元 1,運(yùn)算元 2 ? SUB指令用於把運(yùn)算元 1減去運(yùn)算元 2,並將結(jié)果存放到目的暫存器中。運(yùn)算元 1應(yīng)是一個(gè)暫存器,運(yùn)算元 2可以是一個(gè)暫存器,被移位的暫存器,或一個(gè)立即數(shù)。該指令常用於遮罩運(yùn)算元 1的某些位。該指令常用於反轉(zhuǎn)運(yùn)算元 1的某些位。 ? 乘法指令與乘加指令共有以下 6條: ? MUL 32位元乘法指令 ? MLA 32位元乘加指令 ? SMULL 64位元有符號(hào)數(shù)乘法指令 ? SMLAL 64位元有符號(hào)數(shù)乘加指令 ? UMULL 64位元無(wú)符號(hào)數(shù)乘法指令 ? UMLAL 64位元無(wú)符號(hào)數(shù)乘加指令 55 ARM指令集 乘法指令與乘加指令 MUL指令 ? MUL指令的語(yǔ)法為: ? MUL{條件 }{S} 目的暫存器,運(yùn)算元 1,運(yùn)算元 2 ? MUL指令完成將運(yùn)算元 1與運(yùn)算元 2的乘法運(yùn)算,並把結(jié)果放置到目的暫存器中,同時(shí)可以根據(jù)運(yùn)算結(jié)果設(shè)定 CPSR中相應(yīng)的條件旗標(biāo)位元。 ? 對(duì)於目的暫存器 Low,在指令執(zhí)行前存放 64位元加數(shù)的低 32位元,指令執(zhí)行後存放結(jié)果的低 32位。 ? 指令範(fàn)例: UMLAL R0, R1, R2, R3 ; R0 = ( R2 R3)的低 32位 + R0 ; R1 = ( R2 R3)的高 32位 + R1 61 ARM指令集 程式狀態(tài)暫存器存取指令 ? ARM微處理器支援程式狀態(tài)暫存器存取指令,用於在程式狀態(tài)暫存器和通用暫存器之間般移資料,程式狀態(tài)暫存器存取指令包括以下兩條: ? MRS 程式狀態(tài)暫存器到通用暫存器的資料般移指令。 ? 指令範(fàn)例: MSR CPSR, R0 ;般移 R0的內(nèi)容到 CPSR MSR SPSR, R0 ;般移 R0的內(nèi)容到 SPSR MSR CPSR_c, R0 ;般移 R0的內(nèi)容到 SPSR,但僅僅修改 CPSR中的控制位域 64 ARM指令集 載入 /存儲(chǔ)指令 ? ARM微處理器支援載入 /存儲(chǔ)指令用於在暫存器和記憶體之間般移資料,載入指令用於將記憶體中的資料般移到暫存器,存儲(chǔ)指令則完成相反的操作。 LDR R0, [R1, R2] ! ;將記憶體位址為 R1+R2的字資料讀入暫存器 R0,並將新位址 R1+ R2寫入 R1。 ? 指令範(fàn)例: LDRB R0, [R1] ;將記憶體位址為 R1的位元組資料讀入暫存器 R0,並將 R0的高 24位清零。 68 ARM指令集 載入 /存儲(chǔ)指令 STR指令 ? STR指令的語(yǔ)法為: ? STR{條件 } 來(lái)源暫存器, 記憶體位址 ? STR指令用於從來(lái)源暫存器中將一個(gè) 32位元的字資料般移到記憶體中。 70 ARM指令集 載入 /存儲(chǔ)指令 STRH指令 ? STRH指令的語(yǔ)法為: ? STR{條件 }H 來(lái)源暫存器, 記憶體位址 ? STRH指令用於從來(lái)源暫存器中將一個(gè) 16位元的半字資料般移到記憶體中。 75 ARM指令集 連續(xù)資料載入 /存儲(chǔ)指令 尾碼 ? 基址暫存器不允許為 R15,暫存器列表可以為 R0~R14的任意組合。 SWP R0, R0, [R1] ;該指令完成將 R1所指向的記憶體中的字資料與 R0中的字資料交換。其中,運(yùn)算元可以是通用暫存器,也可以是立即數(shù)( 0~ 31)。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1