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

正文內(nèi)容

嵌入式系統(tǒng)概論—基于32位微處理器與實時操作系統(tǒng)第四講(留存版)

2024-11-27 21:09上一頁面

下一頁面
  

【正文】 D sp!, {r1,r4} POST: r1=0x00000002, r4=0x00000003, sp=0x0008000c 42 單數(shù) 據(jù)交換指令 SWAP ? 單數(shù)據(jù)交換 (SWAP) ? 在寄存器和外部存儲器之間交換字節(jié)或字 ? 讀存儲器和寫存儲器是是放在一起的 ?原子指令 ?執(zhí)行時不能中斷 ?當(dāng) ‘ LOCK’ 信號輸出操作時 ,外部存儲器管理單元被鎖定 ,當(dāng) ?多線程操作時使程序同步 (OS支持 ) ?鎖定 ?信號量 43 ? 在寄存器和存儲器之間,由一次存儲器讀和一次存儲器寫組成的原子操作。 loop … SUBS r1,r1,1 BNE loop 條件執(zhí)行及標(biāo)志位 ** 如果 Z標(biāo)志清零則跳轉(zhuǎn) R1減 1,并設(shè)置標(biāo)志位 21 Condition Codes 不等于( Not equal) 無符號的大于或等于 無符號的小于 負(fù)數(shù)( Minus) 等于( Equal) 溢出( Overflow) 沒溢出 無符號的大于 無符號的小于或大于 正數(shù)或零 小于( Less Than) 大于( Greater Than) 小于等于 總是執(zhí)行( Always) 大于等于 EQ NE CS/HS CC/LO PL VS HI LS GE LT GT LE AL MI VC Suffix 描述 Z=0 C=1 C=0 Z=1 測試的標(biāo)志位 N=1 N=0 V=1 V=0 C=1 amp。寄存器中字的高端空出的位補(bǔ) 0。 ? ROR:循環(huán)右移( Rotate Right)。r0:a,r1:x if (a0) x=1。 ? 通過 SWI機(jī)制,運(yùn)行在用戶模式下的應(yīng)用程序,可請求操作系統(tǒng)執(zhí)行一系列特權(quán)操作。 ? 語法: ? MRS{cond} Rd,psr 。 72 符號定義偽指令 Ⅲ 2. GBLA、 GBLL、 GBLS ? 格式: GBLA/GBLL/GBLS 變量名 ? 說明: GBLA、 GBLL、 GBLS偽操作定義一個匯編程序中的全局變量, 并初始化 , 其中: ?GBLA定義一個全局?jǐn)?shù)字變量 , 并初始化為 0; ?GBLL定義一個全局邏輯變量 , 并初始化為 “ F” ; ?GBLS定義一個全局字符串變量 , 并初始化為空串; 這三條偽指令用于定義全局變量 , 因此在整個程序范圍內(nèi)變量名必須唯一 。 79 數(shù)據(jù)定義偽指令 Ⅴ ? 7. SPACE: 標(biāo)號 SPACE 表達(dá)式 說明: SPACE用于分配一片連續(xù)的存儲區(qū)域并初始化為 0,表達(dá)式為要分配的字節(jié)數(shù) ,SPACE也可用“%”代替。 如果偽操作中沒有指定表達(dá)式 , 則編譯器會將當(dāng)前位置對齊到下一個字的位置 。 87 其他偽指令 Ⅳ ? : END 說明:“ END” 告訴編譯器已經(jīng)到了源程序的結(jié)尾。 我們通常這樣使用這個偽指令:在某源文件中定義一些宏指令 , 用 MAP和 FIELD定義結(jié)構(gòu)化的數(shù)據(jù)類型 , 用 EQU定義常量的符號名稱 , 然后用 GET/INCLUDE將這個源文件包含到其他的源文件中 。chang mode to UnderStack M[10010] ldr sp,=IRQStack 。 FIQStack 0。 與 IMPORT不同的是 , 如果當(dāng)前源文件實際上沒有引用該標(biāo)號 , 該標(biāo)號就不會被加入到當(dāng)前文件的符號表中 。 表達(dá)式的取值范圍為 0—— 31。 83 匯編控制偽指令 Ⅲ ? 3. WHILE、 WEND: WHILE 邏輯表達(dá)式 代碼段 WEND 說明: WHILE和 WEND偽指令能根據(jù)邏輯表達(dá)式的成立與否決定是否循環(huán)執(zhí)行這個代碼段 ?!?代替。 ? 核存在一個執(zhí)行狀態(tài) – Thumb狀態(tài) ? ARM和 Thumb之間切換使用 BX 指令 63 寫 Thumb匯編程序 ? Thumb不是一個“好” 指令集! ? 最好用編譯器來產(chǎn)生 ? 約束并不一致 ? 手動編碼使用 ARM指令集比較好 ? 更多細(xì)節(jié),參看: ?ARM ―Architecture Reference Manual‖ 64 ADS與 ARM匯編程序設(shè)計 65 生成二進(jìn)制文件的過程 匯 編 程 序 1 匯 編 程 序 2 匯 編 程 序 N編 譯 器 ( A s s e m b l e r )目 標(biāo) 文 件 1 目 標(biāo) 文 件 2 目 標(biāo) 文 件 N鏈 接 器 ( L i n k e r )二 進(jìn) 制 文 件66 編譯器的基本功能 ? 規(guī)定匯編語言的語法規(guī)則 ? ADS Vs. GNU ? 預(yù)編譯 (Preassembler) → 標(biāo)準(zhǔn)匯編語言 ? 編譯 → 二進(jìn)制文件 匯 編 程 序預(yù) 編 譯( P r e a s s e m b l e r )編 譯 器( A s s e m b l e r )二 進(jìn) 制 文 件編 譯 器67 預(yù)編譯 (Preassembler) ? 處理偽指令 (PseudoInstruction) ? 偽指令:做為匯編語言的參數(shù),或被預(yù)編譯器識別,翻譯成標(biāo)準(zhǔn)匯編語言。 branch to SUBR .. 。是否到達(dá)結(jié)束地址 BNE loop 。 CMP不需要增加 “ S‖就可改變相應(yīng)的標(biāo)志位。 ? LSR:邏輯右移( Logical Shift Right)。從字的最低端移出的位填入字的高端空出的位。 CMP r0,0 MOVEQ r1,0 MOVGT r1,1 ? 使用條件比較指令 if (a==4 || a==10) x=0。 ? 語法: ? SWI{cond} SWI number 47 軟件中斷 (SWI)執(zhí)行的操作 指令 名稱 執(zhí)行操作 SWI 軟件中斷 Lr_svc=SWI指令后面的指令地址 spsr_svc=cpsr pc=vectors+0x8 cpsr模式 =SVC cpsr I=1(屏蔽 IRQ中斷) 48 SWI中斷處理程序 ? 處理軟件中斷的代碼段稱為中斷處理程序( SWI Handler),中斷處理程序是通過執(zhí)行指令的地址獲取軟件中斷號,指令地址是從 lr計算出來的; ? SWI號的確定方法: SWI_Number=SWI instructionand NOT(0xff00000000) 28 31 24 27 0 Cond 1 1 1 1 SWI number (ignored by processor) 23 條件域 49 SWI處理程序應(yīng)用示例 ? SWI_handler 。 Rd = psr ? MSR{cond} psr[_fields],Rm 。 73 符號定義偽指令 Ⅳ 3. SETA、 SETL、 SETS ? 格式:變量名 SETA/SETL/SETS 表達(dá)式 ? 說明: SETA:給一個數(shù)字變量賦值; ?SETL:給一個邏輯變量賦值; ?SETS:給一個字符串變 Ⅳ 量賦值; 格式中的變量名必須為已經(jīng)定義過的全局或局部變量 , 表達(dá)式為將要賦給變量的值 。 ? 8. MAP: MAP 表達(dá)式 [, 基址寄存器 ] 說明: MAP定義一個結(jié)構(gòu)化的內(nèi)存表的首地址 , “ ^ ” 可以用來代替 MAP。 偏移量也是個數(shù)字表達(dá)式 , 如果存在偏移量 , 則當(dāng)前位置的自動對齊到: 2的表達(dá)式值次方+偏移量 。 ? : 名稱 EQU 表達(dá)式 [, 類型 ] 說明: EQU用于將程序中的數(shù)字常量 、 標(biāo)號 、 基于寄存器的值賦予一個等效的名稱 , 這一點(diǎn)類似于 C語言中的# define, 可用 “ *” 代替 EQU。 GET/INCLUDE只能用于包含源文件 , 包含其他文件則需要使用 INCBIN偽指令 。let sp=IRQStack 設(shè)定快速中斷模式堆棧 : mrs r0,cpsr bic r0,r0,0x1f orr r1,r0,0x11|0xc0 msr cpsr_cxsf,r1 。 IRQStack 2048。 89 其他偽指令 Ⅵ ? : EXTERN 標(biāo)號 [,WEAK] 說明: EXTERN告訴編譯器所使用的標(biāo)號要在當(dāng)前源文件中引用 ,但該標(biāo)號是在其他的源文件中定義的 。 ? ALIGN=表達(dá)式:對齊方式為 2表達(dá)式次方 , 例如:表達(dá)式 =3, 則對齊方式為 8字節(jié)對齊 。 IF、 ELSE、 ENDIF偽指令可以嵌套使用 。 DCD也可用“ amp。 ? 是 ARM 指令集的一個子集。 o v e rf l o w o c c u rre d B GT Gre a te r th a n S i g n e d i n te g e r c o m p a ri s o n g a v e g re a te r th a n B GE Gre a te r o r e q u a l S i g n e d i n te g e r c o m p a ri s o n g a v e g re a te r o r equal B L T L e s s t h a n Si g n e d i n te g e r c o m p a ri s o n g a v e l e s s t h a n B L E L e s s o r e q u a l S i g n e d i n te g e r c o m p a ri s o n g a v e l e s s t h a n o r equal B HI Hi g h e r Un s i g n e d c o m p a ri s o n g a v e h i g h e r B L S L o w e r o r s a m e Un s i g n e d c o m p a ri s o n g a v e l o w e r o r s a m e 53 分支和鏈接指令 ? 分支子程序 (r14 serves as a link register) ? 嵌套子程序 BL SUBR 。存儲 32字節(jié)并更新 r10指針 CMP r9, r11 。 CMP r3,0 CMP r3,0 BEQ skip ADDNE r0,r1,r2 ADD r0,r1,r2 skip ? 默認(rèn)情況下,數(shù)據(jù)處理指令不影響 程序狀態(tài)寄存器 的條件碼標(biāo)志位,但可以選擇通過添加“ S‖來影響標(biāo)志位。寄存器中字的低端空出的位補(bǔ) 0。 ? RRX:擴(kuò)展為 1的循環(huán)右移( Rotate Right Extended by 1 place)。 CMP r0,4 CMPNE r0,10 MOVEQ r1,0 23 條件執(zhí)行 ? 所有的 ARM指令都可以 條 件 執(zhí) 行 ? 指令的 執(zhí) 行 與 否取 決 于 CPSR寄存器的 N, Z, C and V標(biāo) 志位 ? 所有的 Thumb指令都可以解 壓 成全部 條 件指令 ? Condition Field in instruction ? 0000 = EQ Z set (equal) ? 0001 = NE Z clear (not equal) ? 0010 = CS C set (unsigned higher or same) ? 0011 = CC C clear (unsigned lower) ? 0100 = MI N set (negative) ? 0101 = PL N clear (positive or zero) ? 0110 = VS V set (overflow) ? 0111 = VC V clear (no overflow) ? 1000 = HI C set a
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1