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

正文內(nèi)容

第9章arm程序設(shè)計(jì)(完整版)

2024-12-11 15:00上一頁面

下一頁面
  

【正文】 優(yōu)先級。 ② CHR:M 將 0~255之間的整數(shù) M轉(zhuǎn)換為一個(gè)字符。 ① BASE:X 返回基于寄存器的表達(dá)式 X中寄存器的編號。 20201129 31/52 ARM匯編語言程序結(jié)構(gòu)示例 ? GET ? GET ? …… ? AREA Init, CODE, READONLY ? ENTRY ? spr ? MUL r1, r0, r0 …… ? AREA Data1, DATA, READWRITE ? num DCD 10 ? …… ? END 引用其它源文件 代碼段 數(shù)據(jù)段 定義代碼段 指定程序入口 程序主體 ARM匯編程序設(shè)計(jì)實(shí)例 ? 重點(diǎn)介紹如何用 ARM匯編語言實(shí)現(xiàn): –順序結(jié)構(gòu) –分支結(jié)構(gòu) –循環(huán)結(jié)構(gòu) –子程序調(diào)用與返回 順序結(jié)構(gòu) 兩個(gè) 64位數(shù)相加 ? AREA add64, CODE, READONLY ? ENTRY ? start LDR R0, =data1 。 高 32位相加,并使用標(biāo)志位 C ? LDR R0,=result 。 將 R1的值賦給 R0 ? Save STR R0, result 。 查跳轉(zhuǎn)表,確定跳轉(zhuǎn)地址 ? JumpTable ? DCD DoAdd ? DCD DoSub1 ? DCD DoSub2 ? DoAdd …… ? DoSub1 …… ? DoSub2 …… ? Outofrange …… ? Save …… ? END 跳轉(zhuǎn)表 跳轉(zhuǎn)后執(zhí)行 程序跳轉(zhuǎn)示意圖 ?LDR pc, [r3,r0,LSL2] 。 初始化待排序數(shù)組 ? len EQU 7*4 。 聲明文字池 ? CODE16 ? THUMB_CODE ? LDR R0,=N 。 2.初始化部分與主應(yīng)用程序部分的銜接 當(dāng)所有的系統(tǒng)初始化工作完成之后,就需要把程序流程轉(zhuǎn)入到應(yīng)用程序。 ②寄存器 R4~R11( V1~V8 ) 用做子程序內(nèi)的局部變量保存。 ATPCS中的寄存器使用規(guī)則 寄存器 別名 用 法 R0~R3 A1~A4 入口參數(shù) / 返回值 / 臨時(shí) ( scratch)寄存器 R4~R11 V1~V8 子程序局部變量寄存器,其中: ? R7/V4也作為 Thumb狀態(tài)工作寄存器 WR; ?R9/V6在 支持可讀寫段位置無關(guān)的 ATPCS中用作靜態(tài)基址寄存器 SB; ; ; R12 IP 臨時(shí)( scratch)寄存器,用于過程鏈接膠合代碼中(如連接器提供的 veneers代碼協(xié)助實(shí)現(xiàn)長跳轉(zhuǎn)時(shí)會(huì)使用并修改其值) R13 SP 堆棧指針,不能用于其他用途 R14 LR 連接寄存器 R15 PC 程序計(jì)數(shù)器,不能用于其他用途 基本 ATPCS (2):數(shù)據(jù)棧使用規(guī)則 ARM的數(shù)據(jù)??蔀?FD(Full Descending), ED(Empty Descending), FA(Full Ascending)或 EA(Empty Ascending) ,但 ATPCS規(guī)定數(shù)據(jù)棧為 FD類型,且 8字節(jié)對齊 的。 56/52 C程序調(diào)用匯編函數(shù) 1. 匯編程序的設(shè)置要遵循 ATPCS 規(guī)則,保證程序調(diào)用時(shí) 參數(shù)、寄存器和堆棧 的正確使用。 R1中的值為源數(shù)據(jù)塊的首地址 STRB R2, [R0], 1 。 將 斷點(diǎn) 存入堆棧 MOV R0,2 。 調(diào)整數(shù)據(jù)棧指針,準(zhǔn)備返回 LDR PC, [SP, 4] 。如果編譯器 無法 分配 使用 合適的寄存器,將會(huì)報(bào)告 寄存器沖突錯(cuò)誤 。但其值被視為無符號數(shù);若為帶符號數(shù)則用戶需要自己處理與符號有關(guān)的操作; ?若內(nèi)嵌匯編指令中的 C表達(dá)式包含有逗號,則該表達(dá)式應(yīng)該包含在括號中; 如: _asm{ADD x, y, (f(), z)} 。 ? } 求和 子程序 調(diào)用 子程序(注意書上漏?。? 例 RVDS上的運(yùn)行結(jié)果 作業(yè) ? 必做: 、 、 ? 選做: 、 、 、 ? 注意,除題目明確要求外,所有的程序均采用匯編語言編寫 航空航天學(xué)院 清水河,研究院大樓 108 陳 敏 Email: TELE: 02861830626 第 9章 結(jié)束 ?!?表示十六進(jìn)制數(shù); ?不支持 內(nèi)存分配 偽指令,可通過定義變量由編譯器自動(dòng)完成分配; ?不支持 BX指令,并且只有 B指令可以使用 C程序標(biāo)號 ,而 BL不行; ?不能向 PC賦值,程序跳轉(zhuǎn)只能使用 B或 BL指令; ?內(nèi)嵌的 SWI和 BL指令除了正常的操作數(shù)外,可增加幾個(gè)可選的寄存器列表用于參數(shù)傳送; ? …… 內(nèi)嵌匯編指令的應(yīng)用舉例:兩個(gè)數(shù)相加 ? include ? int add(int i, int j) ? { ? int res。 盡管有時(shí)寄存器明顯對應(yīng)某個(gè)變量,但也不能直接使用寄存器代替變量。 在 ARM C語言程序中使用關(guān)鍵詞 _asm來標(biāo)識(shí)一段匯編指令程序,其格式如下: _asm { instruction [。 (R1)=i*2 ADD R2, R1, R0 。 未復(fù)制完,循環(huán)繼續(xù)復(fù)制 MOV PC, LR 。 C 語言程序中使用 extern關(guān)鍵字聲明要調(diào)用的匯編子程序?yàn)橥獠亢瘮?shù)。 ? 數(shù)據(jù)棧 基址 (stack base)指向數(shù)據(jù)棧的最高地址。( Thumb程序通常只能使用 R4~R7) ③ 寄存器 R12( IP) 用作臨時(shí) ( scratch) 指針。 ? 匯編程序和 C/C++程序之間的相互 調(diào)用 ( ATPCS) ? 在 C/C++代碼中 嵌入 匯編指令 51/52 基于 ARM/Thumb指令集過程調(diào)用的規(guī)則 ATPCS PCS用于保證 使用不同編程語言的 子程序 可以分開 編寫、 編譯, 并成功 連接,所以它實(shí)際上定義了一套有關(guān)過程(函數(shù))調(diào)用者與被調(diào)用者之間的協(xié)議。 調(diào)用子程序 SUM_N ? B THUMB_CODE ? SUM_N ? PUSH {R1R7,LR} 。 定義 N的值 100 ? AREA Examples,CODE,READONLY 。 設(shè)置 R6保存待排序數(shù)組首地址 ? ADD r6,r6,len 。 定義跳轉(zhuǎn)表大小 ? ENTRY ? start ? MOV r0, 1 。 保存結(jié)果的高位 ? STR R6,[R0, 4] 。 用寄存器間接尋址方式讀數(shù)據(jù) 1的高 32位到 R1 ? LDR R2,[R0,4] 。 20201129 30/52 ARM匯編語言程序結(jié)構(gòu) ARM(Thumb)匯編語言程序中,以 程序段(代碼段和數(shù)據(jù)段)為單位組織代碼。 對于數(shù)字表達(dá)式, STR運(yùn)算得到一個(gè)以十六進(jìn)制字符組成的字符串; 對于邏輯表達(dá)式, STR運(yùn)算得到字符串“ T”或“ F”。 算術(shù) /邏輯表達(dá)式及運(yùn)算符 算術(shù) /邏輯表達(dá)式由 數(shù)字 /邏輯變量、數(shù)字 /邏輯常量、運(yùn)算符和括號 構(gòu)成。 ? 如果邏輯變量前加“ $” ,編譯器會(huì)將該邏輯變量代換為其 值 (真或假 )。盡管符號的命名由編程者決定,但并不是任意的,必須遵循以下的約定: – ? 符號區(qū)分大小寫,同名的大小寫字母符號會(huì)被編譯器認(rèn)為是兩個(gè)不同的符號; – ? 局部標(biāo)號可以以數(shù)字開頭,其他標(biāo)號均不得以數(shù)字開頭; – ? 符號在其作用范圍內(nèi)必須唯一; – ? 自定義的符號名不能與系統(tǒng)的保留字相同; – ? 符號名不應(yīng)與指令或偽指令同名。源文件 2需要引用在別處定義的標(biāo)號 Main …… END 22/52 INCLUDE(或 GET)、 INCBIN偽指令 INCLUDE 文件名 INCBIN 文件名 ?INCLUDE(或 GET)偽指令用于將一個(gè) 源文件 包含到當(dāng)前的源文件中。 ?IMPORT用于通知編譯器當(dāng)前源文件可能要引用其他源文件中定義的標(biāo)號。 通知編譯器其后為 16位的 Thumb指令 NEXT LDR R3, = 0x3FF …… END 。 AREA Init, CODE, READONLY, ALIEN = 3 。 ?COMMON:定義一個(gè)通用段,各源文件中同名 的 COMMON段共享同一段存儲(chǔ)單元。宏調(diào)用 ,其中宏標(biāo)號為 abc,參數(shù)
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1