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

正文內(nèi)容

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

2024-10-22 21:09 上一頁面

下一頁面
 

【正文】 or Z=1 N=V N!=V Z=0 amp。r0:a,r1:x if (a0) x=1。 r2 points to TABLE2 LOOP: LDR r0, [r1] STR r0, [r2] ADD r1, r1, 4 ADD r2, r2, 4 ... TABLE1: ... TABLE2:... COPY: ADR r1, TABLE1 。裝載 32字節(jié)并更新 r9指針 STMIA r10!, {r0r7} 。完成一個字節(jié)或字的交換。 ? 通過 SWI機制,運行在用戶模式下的應(yīng)用程序,可請求操作系統(tǒng)執(zhí)行一系列特權(quán)操作。make off top 8 bits BIC r10,r10, 0xff000000 。 n o o v e rf l o w o c c u rre d BVS Ov e rf l o w s e t S i g n e d i n te g e r o p e ra ti o n 。 SUBR entry point MOV pc, r14 。 ? 語法: ? MRS{cond} Rd,psr 。 cache. FPU等系統(tǒng)控制器 ? 寄存器 ? 協(xié)處理器專用 ? ARM 控制數(shù)據(jù)流 ? 協(xié)處理器只包含數(shù)據(jù)處理和存貯器傳送操作 ? 協(xié)處理器數(shù)據(jù)操作 (CDP) ? 這類指令是用來告訴協(xié)處理器執(zhí)行某些內(nèi)部操作 ? 無結(jié)果返回 ARM,ARM并不等待操作完成 co n d 1 1 1 0 CRm31 28 27 24 23 20 19 16 15 12 1 1 8 7 5 4 3 0C o p 1 CRn CRd C P C o p 2 059 協(xié)處理器指令 ? ARM體系支持 16個協(xié)處理器 ? 針對每個協(xié)處理器的指令占用 ARM指令集中的固定部分 ? 如果相應(yīng)的協(xié)處理器不存在, 將發(fā)生一個未定義指令異常。 裝載 32 bit常數(shù) 62 0 15 31 0 ADDS r2,r2,1 ADD r2,1 32bit ARM 指令 16bit Thumb 指令 對于由編譯器產(chǎn)生的大部分指令: ?沒有條件執(zhí)行 ?源、目的寄存器必須相同 ?僅能使用低寄存器 ?常數(shù)大小有限制 ?不能使用在線移位器 關(guān)于 Thumb指令集 ? Thumb 是 16bit 指令集 ? 代碼密度優(yōu)化 (總代碼大小約為 ARM指令的 65%) ? 使用窄總線存儲器時可以大大提高性能。 69 ?符號定義偽指令 ?數(shù)據(jù)定義偽指令 ?匯編控制偽指令 ?信息報告?zhèn)沃噶? ?宏指令以及其他偽指令 。 72 符號定義偽指令 Ⅲ 2. GBLA、 GBLL、 GBLS ? 格式: GBLA/GBLL/GBLS 變量名 ? 說明: GBLA、 GBLL、 GBLS偽操作定義一個匯編程序中的全局變量, 并初始化 , 其中: ?GBLA定義一個全局?jǐn)?shù)字變量 , 并初始化為 0; ?GBLL定義一個全局邏輯變量 , 并初始化為 “ F” ; ?GBLS定義一個全局字符串變量 , 并初始化為空串; 這三條偽指令用于定義全局變量 , 因此在整個程序范圍內(nèi)變量名必須唯一 。 75 數(shù)據(jù)定義偽指令 Ⅰ ? 用于為數(shù)據(jù)分配存儲單元,同時也可完成已分配存儲單元的初始化。 77 數(shù)據(jù)定義偽指令 Ⅲ ? 3. DCD/DCDU: 標(biāo)號 DCD/DCDU 表達式 說明: DCD偽指令用于分配一塊 字 存儲單元并用偽指令中指定的表達式初始化,它定義的存儲空間是字對齊的。 DCQU功能跟 DCQ類似 , 只是分配的存儲單元不嚴(yán)格字對齊。 79 數(shù)據(jù)定義偽指令 Ⅴ ? 7. SPACE: 標(biāo)號 SPACE 表達式 說明: SPACE用于分配一片連續(xù)的存儲區(qū)域并初始化為 0,表達式為要分配的字節(jié)數(shù) ,SPACE也可用“%”代替。 MACRO和 MEND之間的代碼稱為宏定義體,在宏定義體的第一行聲明宏的原型,宏的原型包含宏名、所需的參數(shù)。 IF、 ELSE、 ENDIF可以分別用 “ [” 、 “ |” 、 “ ]” 代替 。 ? 4. MEXIT: MEXIT 說明: MEXIT用于從宏中退出 。 如果偽操作中沒有指定表達式 , 則編譯器會將當(dāng)前位置對齊到下一個字的位置 。 屬性部分表示該代碼段 /數(shù)據(jù)段的相關(guān)屬性 , 多個屬性可以用 “ , ” 分隔 。 ? READWRITE:表示本段可讀寫 。 86 其他偽指令 Ⅲ ? 、 CODE32: CODE16/CODE32 說明: CODE16偽操作指示編譯器后面的代碼為 16位的 Thumb指令。 87 其他偽指令 Ⅳ ? : END 說明:“ END” 告訴編譯器已經(jīng)到了源程序的結(jié)尾。 [,WEAK]可選項聲明其他文件有同名的標(biāo)號 , 則該同名標(biāo)號優(yōu)先于該標(biāo)號被引用 。 編譯器在多數(shù)情況下將該標(biāo)號置為 0, 如果這個標(biāo)號被 B或 BL指令引用 , 則將 B或 BL指令替換為 NOP操作 。 ? : 名稱 RN 表達式 說明: RN用于給一個寄存器定義一個別名 ,以便程序員記憶該寄存器的功能 。 我們通常這樣使用這個偽指令:在某源文件中定義一些宏指令 , 用 MAP和 FIELD定義結(jié)構(gòu)化的數(shù)據(jù)類型 , 用 EQU定義常量的符號名稱 , 然后用 GET/INCLUDE將這個源文件包含到其他的源文件中 。 在程序中未使用該偽指令時 , 局部變量的作用范圍為所在的 AREA, 而使用 ROUT后 , 局部變量的作用范圍為當(dāng)前 ROUT和下一個 ROUT之間 。 AbortStack 2048。chang mode to UnderStack M[11011] ldr sp,=UndefStack 。chang mode to UnderStack M[10010] ldr sp,=IRQStack 。chang mode to UnderStack M[10011] ldr sp,=SVCStack 。chang mode to UnderStack M[10001] ldr sp,=FIQStack 。chang mode to UnderStack M[10111] ldr sp,=AbortStack 。 FIQStack 0。 (FIELD:預(yù)留 2KB的存儲空間 ) SVCStack 2048。 ? : INCBIN 文件名 說明: INCBIN將一個數(shù)據(jù)文件或者目標(biāo)文件包含到當(dāng)前的源文件中, 編譯時被包含的文件不作任何變動的存放在當(dāng)前文件中 , 編譯器從后面開始繼續(xù)處理 。 90 其他偽指令 Ⅶ ? : GET 文件名 說明: GET將一個源文件包含到當(dāng)前的源文件中 , 并將被包含的源文件在當(dāng)前位置展開進行匯編處理 。 與 IMPORT不同的是 , 如果當(dāng)前源文件實際上沒有引用該標(biāo)號 , 該標(biāo)號就不會被加入到當(dāng)前文件的符號表中 。 不管當(dāng)前源文件是否使用過該標(biāo)號 , 這個標(biāo)號都會加入到當(dāng)前源文件的符號表中 。 如果表達式為 32位的常量 , 我們可以指定表達式的數(shù)據(jù)類型, 類型域可以有以下三種: CODE16/CODE32/DATA 88 其他偽指令 Ⅴ ? : EXPORT 標(biāo)號 [,WEAK] 說明: EXPORT 在程序中聲明一個全局標(biāo)號 , 該標(biāo)號可以被其他的文件中的代碼引用 。 ? : ENTRY 說明: ENTRY用于指定匯編程序的入口 。 表達式的取值范圍為 0—— 31。 ? CODE:定義代碼段 。 85 其他偽指令 Ⅱ ? : AREA 段名 屬性 , ?? 說明: AREA用于定義一個代碼段 、 數(shù)據(jù)段或者特定屬性的段 。 ? : ALIGN [表達式 [, 偏移量 ]] 說明: ALIGN偽操作可以通過填充字節(jié)使當(dāng)前的位置滿足一定的對齊方式 。 83 匯編控制偽指令 Ⅲ ? 3. WHILE、 WEND: WHILE 邏輯表達式 代碼段 WEND 說明: WHILE和 WEND偽指令能根據(jù)邏輯表達式的成立與否決定是否循環(huán)執(zhí)行這個代碼段 。 注意宏操作可以嵌套使用 , 并可以在編譯時用選項加以控制 。 ? 9. FILED: 標(biāo)號 FIELD 字節(jié)數(shù) 說明: FIELD用于定義一個結(jié)構(gòu)化內(nèi)存表中的數(shù)據(jù)域,“ ” 可用來代替 FILED。 DCFDU功能跟 DCFD類似 , 只是分配的存儲單元不嚴(yán)格字對齊 。” 代替。 其中 , 表達式可以為使用雙引號的字符串或0—— 255的數(shù)字 ,DCB可用 “ =” 代替 。 74 符號定義偽指令 Ⅴ 4. RLIST ? 格式:名稱 RLIST {寄存器列表 } ? 說明: RLIST可用于對一個通用寄存器列表定義名稱 , 該名稱可在 ARM指令 LDM/STM中使用 。 ? 用于定義局部變量的 LCLA、 LCLL、 LCLS; ? 用于定義全局變量的 GBLA、 GBLL、 GBLS ; ? 用于對變量賦值的 SETA、 SETL、 SETS ; ? 為通用寄存器列表定義名稱的 RLIST。 ? 核存在一個執(zhí)行狀態(tài) – Thumb狀態(tài) ? ARM和 Thumb之間切換使用 BX 指令 63 寫 Thumb匯編程序 ? Thumb不是一個“好” 指令集! ? 最好用編譯器來產(chǎn)生 ? 約束并不一致 ? 手動編碼使用 ARM指令集比較好 ? 更多細節(jié),參看: ?ARM ―Architecture Reference Manual‖ 64 ADS與 ARM匯編程序設(shè)計 65 生成二進制文件的過程 匯 編 程 序 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 )二 進 制 文 件66 編譯器的基本功能 ? 規(guī)定匯編語言的語法規(guī)則 ? ADS Vs. GNU ? 預(yù)編譯 (Preassembler) → 標(biāo)準(zhǔn)匯編語言 ? 編譯 → 二進制文件 匯 編 程 序預(yù) 編 譯( P r e a s s e m b l e r )編 譯 器( A s s e m b l e r )二 進 制 文 件編 譯 器67 預(yù)編譯 (Preassembler) ? 處理偽指令 (PseudoInstruction) ? 偽指令:做為匯編語言的參數(shù),或被預(yù)編譯器識別,翻譯成標(biāo)準(zhǔn)匯編語言。 或 ? LDR 指令,從數(shù)據(jù)池( Literal pools)讀取常數(shù)。 psr[_fields] = Rm 在這里: ? psr = CPSR or SPSR ? [_fields] = ‘fsxc’的任意組合 ? 也允許送一個立即數(shù)到 psr_fields ? MSR{cond} psr_fields,Immediate ? 用戶模式下,所有位均可以被讀取,但只有條件標(biāo)志位 (_)可被寫。 save work and link register STMFD r13!, {r0r2,r14} BL SUB2 .. LDMFD r13!, {r0r2,pc} SUB2: .. MOV pc, r14 。 branch to SUBR .. 。return from SWI handler LDMFD sp!, {r0r12,pc}^ 50 控制和分支指令 ? 控制指令 ? 分支和分支連接 ?跳到希望的指令中 ?保存當(dāng)前的 PC并返回 (with ‘L’ bit) ? 分支和交換 ?跳到期望的指令中與指令集交換 ?Rm[0]
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1