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

正文內(nèi)容

嵌入式lpc2103教程-第五章基于arm的嵌入式程序設(shè)計(jì)(編輯修改稿)

2025-05-11 01:05 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 似于C語(yǔ)言中的# define, 可用 “ *” 代替 EQU。 ? 如果表達(dá)式為 32位的常量 , 可以指定表達(dá)式的數(shù)據(jù)類型 , 類型域可以有以下三種:CODE16/CODE32/DATA X EQU 10 Y EQU label+100 Z EQU 0x10,CODE32 reg EQU 0xE01FC080 3) AREA AREA sectionname {,attr}{,attr}? 說(shuō)明:定義一個(gè)代碼段 、 數(shù)據(jù)段或者特定屬性的段 。 如果段名以數(shù)字開(kāi)頭 , 那么該段名需用 “ |”字符括起來(lái) , 如 |7wolf|, 用 C的編譯器產(chǎn)生的代碼一般也用 “ |” 括起來(lái) 。 屬性表示該段相關(guān)屬性 , 多個(gè)屬性用 , 分隔 。 CODE 代碼段; DATA 數(shù)據(jù)段; READONLY 只讀 , 代碼段默認(rèn); READWRITE 可讀寫(xiě) , 數(shù)據(jù)段默認(rèn); ALIGN=~31,以 2expression字節(jié)對(duì)齊 。 AREA ChangeState,CLDE,READONLY 4) ENTRY 說(shuō)明:指定匯編程序的入口 。 一個(gè)程序可包含多個(gè)源文件 , 在一個(gè)源文件里最多只能有一個(gè)ENTRY或沒(méi)有 ENTRY。 在一個(gè)完整匯編程序中至少要有一個(gè) ENTRY, 程序中也可以有多個(gè) ,此時(shí) , 程序的真正入口點(diǎn)可在鏈接時(shí)指定 。 AREA example CODE,READONLY ENTRY CODE32 START MOV R1,0x53 … END 5) END 說(shuō)明:每一個(gè)源程序包含一個(gè) END,表示結(jié)束。 6) ALIGN 添加補(bǔ)丁字節(jié)使當(dāng)前位置滿足一定對(duì)齊方式。 ALIGN {expr{,offset}} ?expr 可能取值為 2的 n次冪,如 8. ?默認(rèn)當(dāng)前位置對(duì)齊到下一個(gè)字邊界處。 例如: AREA cache,CODE,ALIGN=3; 8字節(jié)對(duì)齊 … MOV PC,LR … ALIGN 8 AREA SCopy,CODE,READONLY ENTRY MOV R1,0xFF000000 DCB 0X11 DCB 0X34 ALIGN 4,3 DCB 0X24 7) EXPORT/ GLOBAL EXPORT symbol {[WEAK]} 說(shuō)明:在程序中聲明一個(gè)符號(hào) (區(qū)分大小寫(xiě) ),其他文件中代碼可引用該符號(hào) 。 [,WEAK]聲明其他文件有同名的標(biāo)號(hào) , 則該同名標(biāo)號(hào)優(yōu)先于該標(biāo)號(hào)被引用 。 例如: AREA Example, CODE,READONLY EXPORT fun fun ADD R0,R0,R1 8) IMPORT IMPORT 符號(hào) [, WEAK] 說(shuō)明:告訴編譯器這個(gè)符號(hào) (區(qū)分大小寫(xiě) )要在當(dāng)前源文件中使用 , 是在其他的源文件中定義的 。 [, WEAK] 表示如果所有的源文件都沒(méi)有找到這個(gè)標(biāo)號(hào) , 編譯器也不會(huì)提示錯(cuò)誤信息 。 9) EXTERN EXTERN 符號(hào) [,WEAK] 說(shuō)明:告訴編譯器所使用的符號(hào)要在當(dāng)前源文件中引用 , 是在其他的源文件中定義的 。 與IMPORT不同的是 , 如果當(dāng)前源文件實(shí)際上沒(méi)有引用該符號(hào) , 該符號(hào)就不會(huì)被加入到當(dāng)前文件的符號(hào)表中 。 10) GET/INCLUDE GET 文件名 說(shuō)明:將一個(gè)源文件包含到當(dāng)前的源文件 、 當(dāng)前位置展開(kāi)進(jìn)行匯編處理 。 只能用于包含源文件 , 包含其他文件則需要使用 INCBIN偽指令 。 11) INCBIN INCBIN 文件名 說(shuō)明:將一個(gè)數(shù)據(jù)文件或者目標(biāo)文件包含到當(dāng)前的源文件中 , 編譯時(shí)被包含的文件不作任何變動(dòng)的存放在當(dāng)前文件中 , 編譯器從后面開(kāi)始繼續(xù)處理 。 AREA Example, CODE,READONLY GET GET c:\project\ GET c:\windows project\??捎锌崭? 12) RN 名稱 RN 表達(dá)式 說(shuō)明:給一個(gè)寄存器定義一個(gè)別名 ,以便程序員記憶該寄存器的功能 。 COUNT RN 6 CHOOSE RN 9 13) ROUT [名稱 ] ROUT 說(shuō)明:給一個(gè)局部變量定義作用范圍 。 局部變量作用范圍為當(dāng)前 ROUT和下一個(gè) ROUT之間 。 routine ROUT。定義局部變量 … 1routine 。局部標(biāo)號(hào) 1 … BEQ %2routine … BGE %1routine 2routine 。局部標(biāo)號(hào) 1 … otherroutine ROUT GNU編譯環(huán)境下偽操作和宏指令 GNU編譯環(huán)境下的偽操作可分為以下幾類: 常量編譯控制偽操作 匯編程序代碼控制偽操作 宏及條件編譯控制偽操作 其他偽操作 常量編譯控制偽操作 偽操作 語(yǔ)法格式 作 用 .byte .byte expr {, expr} … 分配一段字節(jié)內(nèi)存單元 , 并用 expr初始化 。 .hword/.short .hword expr {, expr} … 分配一段半字內(nèi)存單元 , 并用 expr初始化 。 .ascii .ascii expr {, expr} … 定義字符串 expr( 非零結(jié)束符 ) 。 .asciz /.string .asciz expr {, expr} … 定義字符串 expr( 以 /0為結(jié)束符 ) 。 .float/.single .float expr {, expr} … 定義一個(gè) 32bit IEEE 浮點(diǎn)數(shù) expr。 .double .double expr {, expr} … 定義 64bit IEEE浮點(diǎn)數(shù) expr。 word/.long /.int .word expr {, expr} … 分配一段字內(nèi)存單元 , 并用 expr初始化 。 .fill .fill repeat {, size}{, value} 分配一段字節(jié)內(nèi)存單元 , 用 size長(zhǎng)度 value填充 repeat次 。 .zero .zero size 分配一段字節(jié)內(nèi)存單元 , 并用 0填充內(nèi)存 。 .space/.skip .space size {, value} 分配一段內(nèi)存單元 , 用 value將內(nèi)存單元初始化 。 匯編程序代碼控制偽操作 偽操作 語(yǔ)法格式 作 用 .section .section expr 定義域中包含的段 。 .text .text {subsection} 將操作符開(kāi)始的代碼編譯到代碼段或代碼段子段 。 .data .data {subsection} 將操作符開(kāi)始的數(shù)據(jù)編譯到數(shù)據(jù)段或數(shù)據(jù)段子段 。 .bss .bss {subsection} 將變量存放到 .bss段或 .bss段的子段 。 .code 16/.thumb .code 16 .thumb 表明當(dāng)前匯編指令的指令集選擇 Thumb指令集 。 .code 32/.arm .code 32 .arm 表明當(dāng)前匯編指令的指令集選擇 ARM指令集 。 .end .end 標(biāo)記匯編文件的結(jié)束行 , 即標(biāo)號(hào)后的代碼不作處理 。 .include .include “filename” 將一個(gè)源文件包含到當(dāng)前源文件中 。 .align/.balign .align {alignment} {,fill} {, max} 通過(guò)添加填充字節(jié)使當(dāng)前位置滿足一定的對(duì)齊方式 。 宏及條件編譯控制偽操作 偽操作 語(yǔ)法格式 作 用 .macro 、 .exitm及 .endm .macro acroname{ parameter{ , parameter} … } … .endm .macro偽操作標(biāo)識(shí)宏定義的開(kāi)始 , .endm標(biāo)識(shí)宏定義的結(jié)束 。 用 .macro及 .endm定義一段代碼 , 稱為宏定義體 。 .exitm偽操作用于提前退出宏 。 . ifdef, .else及 .endif .ifdef condition … .else … .endif 當(dāng)滿足某條件時(shí)對(duì)一組語(yǔ)句進(jìn)行編譯 , 而當(dāng)條件不滿足時(shí)則編譯另一組語(yǔ)句 。 其中 else可以缺省 。 其他偽操作 偽操作 語(yǔ)法格式 作 用 .eject .eject 在匯編符號(hào)列表文件中插入一分頁(yè)符 。 .list .list 產(chǎn)生匯編列表 ( 從 .list 到 .nolist) 。 .nolist .nolist 表示匯編列表結(jié)束處 。 .title .title “heading” 使用 “ heading ”作為標(biāo)題 。 .sbttl .sbttl “heading” 使用 “ heading”作為子標(biāo)題 。 .lt .lt 在當(dāng)前段的當(dāng)前地址 ( 字對(duì)齊 ) 產(chǎn)生一個(gè)文字池 。 .req .req name, expr 為一個(gè)特定的寄存器定義名稱 。 .err .err 使編譯時(shí)產(chǎn)生錯(cuò)誤報(bào)告 。 .print .print string 打印信息到標(biāo)準(zhǔn)輸出 。 .fail .fail expr 編譯匯編文件時(shí)產(chǎn)生警告 。 偽指令 語(yǔ)法格式 作 用 ADR ADR { cond} register, expr 將基于 PC或基于寄存器的地址值讀取到寄存器中 。 小范圍的地址讀取 。 ADRL ADRL{cond} register, expr 將基于 PC或基于寄存器的地址值讀取到寄存器中 。 中等范圍的地址讀取 。 LDR LDR {cond} reg, =[ expr | labelexpr] 將一個(gè) 32位的立即數(shù)或者一個(gè)地址值讀取到寄存器中 。 大范圍的地址讀取 。 NOP NOP 在匯編時(shí)將被替換成 ARM中的空操作 。 匯編時(shí)被替換成 ARM或 Thumb指令 1) ADR { cond} register, expr expr:基于 PC或寄存器的地址表達(dá)式,取值范圍: 地址非字對(duì)齊 ,255~255 地址字對(duì)齊 ,1020~1020 將基于 PC或寄存器的地址值讀取到寄存器中。 ADR偽指令被替換成一條合適的指令( ADD指令或 SUB指令)。如果不能用一條來(lái)實(shí)現(xiàn) ADR偽指令的功能,編譯器將報(bào)告錯(cuò)誤。 ADR-小范圍的地址讀取偽指令 示例 : start MOV r0,10; PC=當(dāng)前指令地址 +8字節(jié) ADR r4,start ;本 ADR偽指令將被編譯器替換成 。 SUB r4,pc,0xc 2) ADRL ADRL { cond} register, expr 將基于 PC或基于寄存器的地址值 expr讀取到寄存器中。 被替換成 2條 ADD或 SUB ARM指令,中等范圍的地址讀取 。 expr:基于 PC或寄存器的地址表達(dá)式,取值: 地址非字對(duì)齊 ,64KB~64KB 地址字對(duì)齊 ,256KB~256KB 例如 : start MOV R0,10 ADR R4,start+60000 ADRL-中等范圍的地址讀取偽指令 示例 : start M
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1