版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(shí)驗(yàn)1ADS開發(fā)工具介紹
1.1ARM開發(fā)環(huán)境的介紹
1.2ARMADS開發(fā)環(huán)境的安裝
1.3ARMADS開發(fā)環(huán)境的組成
ARMADS2的默認(rèn)安裝目錄:C:\ProgramFiles\ARM\ADSvl_2?
ARMADS2安裝目錄包含文件介紹:
Bin可執(zhí)行文件,armasm.exe,arm匯編器
Armcc.exe,armc編譯器
Armcpp.exe,armc++編譯器
Armlink.exe,armelf影像連接器
Armsd.ee,arm符號(hào)調(diào)試器
Axd.exe,arm調(diào)試器
IDE.exe,CodeWarrior應(yīng)用程序界面
其它各種各樣的卜一述應(yīng)用程序使用的動(dòng)態(tài)連接庫(kù)文件
CodeWarriorHelp--CodeWarriorIEDE使用指南
Examples---各種各樣的程序例子
Inclu加一Arm支持C語言的系統(tǒng)頭文件
Lib--編寫ARM程序時(shí)C語言可以使用的庫(kù)文件的目錄
PDF--各種各樣的手冊(cè)使用指南、幫助文檔,是學(xué)習(xí)使用ADS集成開發(fā)環(huán)境的
第一手?jǐn)?shù)據(jù)。
具體如下:
ADS_GettingStarted_D:ADS快速使用指南
ADS_DeveloperGuide_D:ADS開發(fā)者指南
ADSCodeWarriorlDEGuide:CodeWarriorlDE使用指南
ADS_AssemblerGuide_B:Arm?匚編2岸使用■}■旨南
ADS_CompilerGuide_D:ARM編譯器使用指南
ADS_LinkerGuide_A:ARM連接器使用指南
ADS_AXDarmsdGuide_D:ARM符號(hào)調(diào)試器指南
ADSDebugTargetGuideD:ARM調(diào)試目標(biāo)指南
1.4ARMADS2開發(fā)環(huán)境的基本使用
1)建立工作目錄:在電腦的D盤創(chuàng)建“my_project”目錄,以后我們的實(shí)驗(yàn)程序都放在這
個(gè)目錄下。
2)建立工程:運(yùn)行"CodeWarriorfbrARMDeveloperSuite"(以下簡(jiǎn)稱ADS)。然后選擇
File->New,彈出屬性為"New"的窗口,選中"ArmExecutableImagen選項(xiàng),并在右
面的“Location”文本框選擇D盤的my_project目錄,并輸入項(xiàng)目名稱"asm”,如圖1
所示。
圖1
在圖1中點(diǎn)擊“保存”按鈕,保存項(xiàng)目,結(jié)果如下圖2所示。
圖2
在圖2中點(diǎn)擊“確定”按鈕,該動(dòng)作將創(chuàng)建一個(gè)新的工程asm.mcp,該工程所在
目錄是D:\my_project\asm文件夾(可去該目錄下看新生成的一些文件)。同時(shí)在ADS中
創(chuàng)建了一個(gè)與工程名相同的工作區(qū),在工作區(qū)窗口將顯示該工作區(qū)和工程,如圖3所示。
圖3
3)建立源文件:選擇File->New菜單項(xiàng),在彈出的標(biāo)題為“New”的窗口中選擇“File”選
項(xiàng)卡,再選中“TextFile”選項(xiàng),并在右面的文本框中輸入如圖所示內(nèi)容。之后點(diǎn)擊確
定,建立asm.s匯編文件。如圖4所示。
圖4
在該文件中輸入如下匯編程序代碼,并保存asm.s匯編源程序。
AREAINIT,CODE,READONLY;namethisblockofcode
numEQU20;Setnumberofwordstobecopied
ENTRY;markthefirstinstructiontocall
start
LDRrO,=src;rO=pointertosourceblock
LDRrl,=dst;rl=pointertodestinationblock
MOVr2,#num;r2=numberofwordstocopy
wordcopy
LDRr3,[r0],#4;awordfromthesource
STRr3,[rl],#4;storeawordtothedestination
SUBSr2,r2,#1;decrementthecounter
BNEwordcopy;...copymore
stop
MOVrO,#0x18;angelSWIreasonReportException
LDRrl,=0x20026;ADPStoppedApplicationExit
SWI0x123456;ARMsemihostingSWI
AREABlockData,DATA,READWRITE
srcDCD123,4,5,6,7,8,123,4,5,6,7,8,1,2,3,4
dstDCD0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
END
注:也可以使用你所喜歡的編輯工具編寫源文件,然后再拷貝到項(xiàng)目目錄。
該程序包括?個(gè)數(shù)據(jù)段和一個(gè)代碼段,在數(shù)據(jù)段定義了兩個(gè)緩沖區(qū):src和dst。代碼段
程序的主要功能是以字為單位把src緩沖區(qū)的存儲(chǔ)內(nèi)容依次拷貝到dst緩沖區(qū)。
4)添加源文件:在ADS中選擇“Project”->“AddFiles”,打開文件選擇對(duì)話框,在工程
目錄下選擇剛才建立的源文件asms。
5)開發(fā)工具設(shè)置:在工作區(qū)窗口中的下拉列表中選擇“Debug”條目,然后雙擊“target”
選項(xiàng)卡下的"Debug”條目,彈出“DebugSettings”窗口。分別見圖5?圖7。
^DebugRel
^Release
圖5
注意:圖5中,Debug、Release>DebugRel其實(shí)代表了三種不同的編譯選項(xiàng),選擇每
一種選項(xiàng)都可以編譯生成ARM可執(zhí)行映象。不同的是,Dcbgu選項(xiàng)所產(chǎn)生的映象包含了
比較多的調(diào)試信息,主要用于調(diào)試階段;而Release的映象則不包含任何調(diào)試信息,主要用
于程序發(fā)布階段。DebugRell選項(xiàng)產(chǎn)生的映象介于兩者之間。
@DebugRel
④Release
圖6
圖7
選擇該圖7窗口左面樹型列表里面的“TargetSettings"選項(xiàng)。在右面的Linker下拉菜單
處選擇ARMLinker作為程序連接器。Pre-Linker選項(xiàng)選擇None,Post-linker選項(xiàng)選擇ARM
fromELFo這里ARMfVomELF是ADS提供的一個(gè)小工具,用于在連接之后,把映象從ELF
格式轉(zhuǎn)換成bin格式。
選擇圖7窗口左面樹型列表里面的"LanguageSettings”條目下面的"ARMAssembler”
選項(xiàng),然后在右邊的“ArchitectureorProcessor”列表中選擇“ARM920T";uFloatingPoint
列表中選擇"NoFloatingPoint”。如圖8所示。
圖8
解釋:在圖8中,所做的設(shè)置其實(shí)是培植IDE調(diào)用匯編器時(shí)傳遞的命令行參數(shù)。每選選中
一項(xiàng)或取消一項(xiàng)都會(huì)對(duì)命令行參數(shù)進(jìn)行調(diào)整,在"EauivalentCommandLine”編輯框內(nèi)放映
了全部的命令行參數(shù)。至于每一個(gè)命令行參數(shù)代表什么意義請(qǐng)查閱
**ADSAssemblerGuideB",。
下面,選擇圖7窗口左面樹型列表里面的“LanguageSettings"條目下面的“ARMC
Compiler",設(shè)置C編譯器,如圖9所示。
j*pebugSettings01區(qū)]
gTargetSettingsFanels?ARfflCCompiler
Ff-Target
TargetandSourceATPCS!Waitings|Errors|Debug/Opt|PreprocessI
TargetSettings
AccessPathsArchitectureorProcessorFloatingPoint
BuildExtras|kRM920T|Pure-endiansoftfp
RuntimeSettings
FileMappings
SourceTrees
ARMTargetByteOrderSourceLanguage
?一LanguageSettingsGLittleEndi
(AHSI/ISOStandardC
LARMAssemblerr*BigEndiai
…MRMCCompiler
H
LARMC++Compiler
…ThumbCCompilerEquivalentCommandLine
一ThumbC++Com.-00-才-cpuARM920T
Linker
ABMLinker
ARMfromELF
一Editor
RevertImportPanel.|ExportPanel...
圖9
解釋:在此窗U中,可點(diǎn)擊其它選項(xiàng)卡,并進(jìn)行設(shè)置。這些設(shè)置會(huì)反映到C編譯器的命令
參數(shù)中,多代表的具體意義請(qǐng)參見"ADS_CompilerGuide_D”文檔。
接下來,設(shè)置程序連接器,點(diǎn)擊“Linker”目錄下的ARMLinker,并做如圖10所示設(shè)置(采
用默認(rèn)設(shè)置即可):
?■DebugSettings
factorySetting^EevertImportPanel.ExportPanel..
Apply
圖10
在圖10中點(diǎn)擊OK按鈕,開發(fā)環(huán)境設(shè)置完畢。
解釋:在此窗口的設(shè)置中,ROBASE和RWBASE其實(shí)分別指定了程序影像代碼段和數(shù)據(jù)
段的不同連接地址,當(dāng)RWBASE空著不填時(shí),默認(rèn)數(shù)據(jù)段根在代碼段的后面。在我們這個(gè)
例子中,我們選擇ROBASE的默認(rèn)地址。以后,編寫在實(shí)驗(yàn)板的SDRAM中運(yùn)行的程序時(shí),
ROBASE將會(huì)指定一個(gè)SDRAM中的地址。關(guān)于連接器的詳細(xì)設(shè)置,請(qǐng)參見
“ADS_LinkerGuide_A”文檔。
6)編譯生成目標(biāo)代碼:選擇“Project”->“Make”或者按下快捷鍵“F7”,生成目標(biāo)代碼。
也可以單擊工具欄或者工作區(qū)窗口中的相應(yīng)按鈕來完成,分別如圖11、圖12所示。
圖11
圖12
此時(shí),到項(xiàng)目所在文件夾D:\my_project\asm\asm_Data\Debug目錄下可以看到編譯生成
的可執(zhí)行目標(biāo)文件asm(armexecutablefile)。
注意:此時(shí)生成的文件是ELF格式的映像文件,借助于ADS集成的AXD軟件,我們可以
把此影響下在到軟件模擬器或者正式系統(tǒng)中單步或全速運(yùn)行。但若把此程序直接燒寫到0
地址的FLASH中,啟動(dòng)上電從0地址開始執(zhí)行程序時(shí),我們燒寫的程序是沒辦法正常運(yùn)行
的。原因是,此文件是ELF格式的文件,包含了除去我們所編寫指令外的其他很多用于調(diào)
試以及ELF格式本身所要求的信息。借助于AXD下載運(yùn)行時(shí),AXD會(huì)解釋這些附加的信
息;而燒寫到flash中去時(shí),此程序沒法正常運(yùn)行。必須向Hash中燒寫一個(gè).bin格式的只包
含程序指令和數(shù)據(jù)的文件,才能正常運(yùn)行。
下面利用軟件仿真器(Armulator)的方式調(diào)試該程序。
解釋:Armulaotr相當(dāng)于用軟件實(shí)現(xiàn)的一個(gè)arm處理器,可仿真多個(gè)系列的arm處理器,我
們可借助其仿真運(yùn)行、調(diào)試arm可執(zhí)行程序。
7)軟件仿真器設(shè)置:運(yùn)行AXD,選擇“Option”->“ConfigureTarget",在彈出來的對(duì)話
框中選擇開頭字母為"ARMUL”的選項(xiàng)。如下圖13所示:
圖13
該界面用于選擇程序運(yùn)行的目標(biāo)系統(tǒng),當(dāng)選擇ARMUL時(shí),即設(shè)定程序運(yùn)行目標(biāo)是
ARMULATOR仿真器,該仿真器是一個(gè)在程序,以dll文件的形式存在,可模擬多個(gè)系列的
ARM處理器。這種調(diào)試方式也即常說的“軟件模擬器調(diào)試”的方式。其它方式以后再講。
點(diǎn)擊窗口右邊的“Configure”按鈕,在彈出的對(duì)話框中做如圖14所示的設(shè)置。
ARBulatorConfiguration0E
圖14
然后點(diǎn)擊“OK”按鈕,再在“choosetarget”窗口中點(diǎn)擊“OK”按鈕。這樣我們就選
擇了實(shí)現(xiàn)arm920t處理器內(nèi)核的armulator作為我們的目標(biāo)執(zhí)行系統(tǒng)。
8)下載映象,準(zhǔn)備用軟件仿真器調(diào)試:在AXD中選擇“File”->“LoadImage”,彈出文
件選擇對(duì)話框,選擇"myprotect\asm\asm_Data\Debug”目錄下的asm.axf文件,然后點(diǎn)
擊“打開”按鈕,下載映象。常用方式是關(guān)掉AXD,在ADS的工具欄或者工作去窗口
中點(diǎn)擊對(duì)應(yīng)于Debug的按鈕,或者選擇Project->Debug,或者按下快捷鍵F5,都可以完
成映象文件的下裁。下載完畢后,AXD如圖15所示。
r'AXD-[ARI920T-D:\ayproject\asa\asa.s]□0?
圖15
在圖15中,第八行處的藍(lán)色箭頭表示下一條要執(zhí)行的指令。
9)調(diào)試環(huán)境的基本使用
(1)ProcessorViews菜單,如圖16所示
八AXD(ARB920TDa、”project\nsM\ns*??]
tFree、nrV?i?w??mVi?w?Fu*mi??0『aion?宣tedewHelp
?dCtrliR
照1喧Ia中0時(shí)].四曝]刖四向」|厄回舊畫回副鬼」|
世3chCtrl+K
ARM9RTn?cisl<AREAINTT.CODE,READONLY;noiH”t:
1abl?aClrliF
?工
numEQUjOec.ntuabee
由Cucnentfii*cktr?c?CtrifT
M?moryCtrlIM
田UHMK/SyfffLMMENTRY;mtiEkthet
tfl-FIQl^owL?v?lSymbolsAll+Z
CDIRQQe?mm?ChannelCtrl+H
fff3VCCtvl+N
田AboutLDR£□t-ozajcO-point
QiCtrl+llLDRvl,-dac;cl-point:
05必r
Sourfl?CO1.+SMOVc2/"nun;t2"numbe
CPIS
田c*chnbrairdcopy
HITLDoperacicFLDRt3,[EO]/#4:awocdEco:
田DrbuaComing(...)isJJTRE3/[EI]/4t43storeawo
i,3UB9K2,H2,fl:dacrftmAnt:
178NEwocdoopy;?.(copya
IB三
ID
200tOp
Z1MOVE0<4(OxlD3anael_SUIr
T<r<0tjimnc?|File*|C1*BK)22LDRtri,-0x20026:ADP_9spM
S5WI0x129456;APM-seniho
9拚ARM92OT-23
24
25AREABlGQMDetut,DATA.RKADWRTTK
26
273ECDCD1,2/3/4/5,6,7,0,1,2,3,5,6,
2BDCD0,0,0,0,0,0t0,0,0,0,0,0,0,0,
END
4I
圖16
在圖16中,當(dāng)選擇“Register”菜單時(shí),界面左側(cè)出現(xiàn)浮動(dòng)窗口“ARM920T-Registers”,
在此窗口內(nèi)可察看ARM920T處理器內(nèi)的所有寄存器。其中“Current”樹狀目錄下反應(yīng)了當(dāng)
前模式下程序可以訪問的寄存器。其中,PC寄存器存放即將執(zhí)行指令的地址,CPSR寄存
器放映了當(dāng)前程序運(yùn)行的狀態(tài)。根據(jù)CPSR的值可計(jì)算出當(dāng)前處理器所處的工作模式。如圖
所17示。
■'AXD-[ARJI920T-D:\ay_project\asM\asB.s
FileSearchProcessorViewsSystemViewsExecute
囹詡■周■HIH.I0
ARM920T-Registers1
RegisterValueA2
S
B-Current{…}4
FrO0x000080345
l-rl0x000080846
h-120x000000007
卜工30x000000008
9"工40x000000009
410
i-r50x00000000
11
I-r6
0x00000000工
;2
Ir70x0000000013
Fr80x0000000014
I-1:90x0000000015
|rrl00x0000000016
Hr110x0000000017
18
?-rl20x00000000
19
rr130x0000000020
”114
0x0000000021
iPC0x0000800422
cpsrnzcvqIFt_SVC23
spsrnzcvqift_Res24
?User/System{…}25
0-FIQ26
27
國(guó)IRQ
{…}28
0SVC{…}29
?Abort{…}
0TTnrtpfV
圖17
在圖16中,當(dāng)選擇“Memory”菜單時(shí),彈出“ARM920T-Memory”的浮動(dòng)窗口,從
此窗口內(nèi)可察看系統(tǒng)任意地址處存儲(chǔ)器內(nèi)的內(nèi)容。在本手冊(cè)中,顯示了從0地址開始的一段
存儲(chǔ)器內(nèi)的內(nèi)容。每一行顯示了16個(gè)字節(jié)的存儲(chǔ)器內(nèi)容。在該窗口上點(diǎn)擊鼠標(biāo)右鍵,可探
出浮動(dòng)菜單欄,從“size”菜單內(nèi)可選擇以字節(jié)、半字或者字的方式顯示存儲(chǔ)器內(nèi)容。從
“fbrmat”菜單內(nèi)可選擇具體的8進(jìn)制、16進(jìn)制、二進(jìn)制、ASCH碼等顯示格式。其它菜單
的使用請(qǐng)參見CodeWarriorIDE使用手冊(cè)。
Aimmr???wy八6…g
T?M-J*??-??R?<??11?乂~Aw〃|?*fu|T?t3-tka->?pi?£>??T?Mr*“i*|
AWIff__0"□
ixODocoooamOQG
IMOOOOOOIDIOFkF00nnEjrm??ry
hODOOOO^l10Wrr&,414b,
UOOOOOO>U10Mrrn
hrOCOOQ04a10FrMrr
FrTMCI?lr?,,》AN
irOGOOoaM10"MTTrr
_一TfC?l?fit
(>avy?aMttfr
皿51n?H<LM:
XafrM&b
L?<filt
T,pp?r?t?K
|A/W92DT|W,BIcKtetUlO-cacre(Fh/pcdffrnnayflUILitteenAnFl??(■ri?A*?
iSwithMtinQDstKACarnnCh?r?l4GliMwrtoTirmProiiHT&
£7c^d*tajnAutraWkCMti*c?.kllevdck?M
R(llC<>>irauw*4wia?8
IAFMRDI15IA,YNCRC*PwiccdCCEE心vl2IB&rwte9051匚QDHEk<AFMUT?VO2001
圖18
在圖16種,當(dāng)選擇"source"菜單時(shí),可彈出"opensource”窗口,從中可以選擇把項(xiàng)目中
的任一個(gè)選文件顯示在當(dāng)前窗口。如下圖19所示:
圖19
(2)"execute”菜單
g。-全速運(yùn)行程序,直到結(jié)束或斷點(diǎn)處。Stop-停止程序運(yùn)行
StepIn-在子函數(shù)調(diào)用語句處,用“stepin”執(zhí)行語句,可跟蹤進(jìn)入子函數(shù)
Step-單步執(zhí)行一條指令,若是子函數(shù)調(diào)用語句,不盡如子函數(shù)。
Stepout-當(dāng)子函數(shù)內(nèi)執(zhí)行時(shí),點(diǎn)擊此菜單,子函數(shù)剩余未執(zhí)行語句全部執(zhí)行完畢,并
返回到調(diào)用子函數(shù)指令的下一條指令處。
ToggleBreakpoint-設(shè)置斷點(diǎn)/去處斷點(diǎn)
?.、AXDIAKVP2OT
£11?&?&ruhEr9tfMkMorVl?wv口「幺,Mtindow
但訂臃f|a|cat]J
ARM92OT-―
VAIUSIn
OCurrent1?.?)
xooxoooaea34Qut
-?rl0x00008064Cursor
EZoxooooaooo
gx?cutionCont?>:<■
-K3DxOClOOOOOO
E4OXOOOOOOOO.?R*?mlkpolnt
??KSoxooaooooo
IEQuxuauuuooo
卜.七7
Dxonnooooo?AllBr?alcpointM
I'r?oxaooooooo"r^V[EJ,*4
,—?:90x00000000STRU3?[ri]/,4
-E10OxODOOOUUO3UD5£2/r2r"JI
I£110X00000000DNEwordeopy
圖20
10)根據(jù)上述調(diào)試工具的描述,單步運(yùn)行程序,并觀察處理器寄存器的變化。
實(shí)驗(yàn)2Arm處理器工作模式實(shí)驗(yàn)
2.1實(shí)驗(yàn)?zāi)康?/p>
1.掌握Arm處理器的幾種不同的工作模式
2.掌握使用MSR/MRS指令實(shí)現(xiàn)Arm處理器工作模式的切換,觀察不同模式下的寄存器,
加深對(duì)CPU結(jié)構(gòu)的理解
3.理解狀態(tài)寄存器的具體作用和使用
2.2實(shí)驗(yàn)設(shè)備
1.硬件:PC機(jī)
2.軟件:ARMADS2集成開發(fā)環(huán)境,Windows98/2000/NT/XP
2.3實(shí)驗(yàn)內(nèi)容
通過Arm匯編指令,在各種處理器模式下切換并觀察各種模式下寄存器的區(qū)別;掌握
ARM不同處理器模式的進(jìn)入和退出
2.4預(yù)備知識(shí)
1.ArmAds2集成開發(fā)環(huán)境的啟動(dòng)和基本使用(請(qǐng)參見系統(tǒng)說明手冊(cè)第四章)
2.Arm體系結(jié)構(gòu)及匯編編程基本知識(shí)(請(qǐng)參見Arm體系結(jié)構(gòu)及編程一書)
2.5實(shí)驗(yàn)原理
1.Arm處理器的運(yùn)行模式
>ARM微處理器支持7種運(yùn)行模式,分別為:
用戶模式(usr):ARM處理器正常的程序執(zhí)行狀態(tài)
快速中斷模式(fiq):用于高速數(shù)據(jù)傳輸或通道處理
外部中斷模式(irq):用于通用的中斷處理
管理模式(svc):操作系統(tǒng)使用的保護(hù)模式
數(shù)據(jù)訪問終止模式(abt):當(dāng)數(shù)據(jù)或指令預(yù)取終止時(shí)進(jìn)入該模式,可用于虛擬存儲(chǔ)
及存儲(chǔ)保護(hù)。
系統(tǒng)模式(sys):運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)。
未定義指令中止模式(und):當(dāng)未定義的指令執(zhí)行時(shí)進(jìn)入該模式,可用于支持硬件
協(xié)處理器的軟件仿真。
>ARM微處理器的運(yùn)行模式可以通過軟件改變,也可以通過外部中斷或異常處理改變。大
多數(shù)的應(yīng)用程序運(yùn)行在用戶模式下,當(dāng)處理器運(yùn)行在用戶模式下時(shí),某些被保護(hù)的系統(tǒng)
資源是不能被訪問的。
>除用戶模式以外,其余的所有6種模式稱之為非用戶模式,或特權(quán)模式
(PrivilegedModes);其中除去用戶模式和系統(tǒng)模式以外的5種又稱為異常模式
(ExceptionModes),常用于處理中斷或異常,及需要訪問受保護(hù)的系統(tǒng)資源等情況。
>ARM體系結(jié)構(gòu)包含一個(gè)當(dāng)前程序狀態(tài)寄存器(CPSR)和五個(gè)備份的程序狀態(tài)寄存器
(SPSRs)o備份的程序狀態(tài)寄存器用來進(jìn)行異常處理,其功能包括:
保存ALU中的當(dāng)前操作信息
控制允許和禁止中斷
設(shè)置處理器的運(yùn)行模式
>程序狀態(tài)寄存器的每一位的安排如圖2.6所示:
梟件用標(biāo)志保W抒制位
11II1
3130202s272635Xa76543Zf0
丁丁「1丁T夕…「「?一「丁「一|?
NZCV../Z.If1M4M3M2MlMO
Dita
CairyBarturtE?endStaletil
ZuioFtOifisaM
IRUdg汕Im
圖2.6程序狀態(tài)寄存器格式
(1)條件碼標(biāo)志(ConditionCodeFlags)
N、Z、C、V均為條件碼標(biāo)志位。它們的內(nèi)容可被算術(shù)或邏輯運(yùn)算的結(jié)果所改變,并且
可以決定某條指令是否被執(zhí)行。
在ARM狀態(tài)下,絕大多數(shù)的指令都是有條件執(zhí)行的。
在Thumb狀態(tài)下,僅有分支指令是有條件執(zhí)行的。
條件碼標(biāo)志各位的具體含義如表2-1所示:
表2-1條件碼標(biāo)志的具體含義
標(biāo)志位含義
N當(dāng)用兩個(gè)補(bǔ)碼表示的帶符號(hào)數(shù)進(jìn)行運(yùn)算時(shí).W表示運(yùn)算的結(jié)果為負(fù)數(shù):N=0表示運(yùn)算的結(jié)
果為正數(shù)或零:
ZZ=1表示運(yùn)算的結(jié)祟為零:z=o表示運(yùn)算的洽奧為非零;
C可以有4種方法設(shè)置C的值:
—加法運(yùn)算(包拈比較指令CMX):當(dāng)運(yùn)算結(jié)果產(chǎn)生了進(jìn)位時(shí)(無符號(hào)數(shù)就出).C=l.否則
c=o.
-戰(zhàn)法運(yùn)算(包括比較指令CMP):當(dāng)運(yùn)算時(shí)產(chǎn)生了借位(無符號(hào)數(shù)溢出),C=0,否則C=1
—對(duì)于包含移位操作的非加/減運(yùn)算指令,C為移出值的最后?位.
-對(duì)于其他的非加依運(yùn)算指令,C的值通常不改變.
V可以有2種方法設(shè)置¥的值:
一支可」:」,性制的補(bǔ)碼表示的帶符號(hào)數(shù)時(shí)?丫=1」
符號(hào)位潛出.
一對(duì)手其他的非加/誠(chéng)運(yùn)算指令.C的值通常不改變。
Q4ARiIv5及以上版本的E系列處理器中.用Q標(biāo)志位指小增強(qiáng)的DSP運(yùn)算指令是否發(fā)生了溢
出.在其他版本的處理器中,Q標(biāo)志位無定義.
(2)控制位
PSR的低8位(包括I、F、T和M[4:0])稱為控制位,當(dāng)發(fā)生異常時(shí)這些位可以被改變。
如果處理器運(yùn)行特權(quán)模式,這些位也可以由程序修改。
(3)中斷禁止位I、F:
1=1禁止IRQ中斷;
F=1禁止FIQ中斷。
(4)T標(biāo)志位:該位反映處理器的運(yùn)行狀態(tài)。
對(duì)于ARM體系結(jié)構(gòu)v5及以上的版本的T系列處理器,當(dāng)該位為1時(shí),程序運(yùn)行于Thumb
狀態(tài),否則運(yùn)行于ARM狀態(tài)。
對(duì)于ARM體系結(jié)構(gòu)v5及以上的版本的非T系列處理器,當(dāng)該位為1時(shí),執(zhí)行下一條指令
以引起為定義的指令異常;當(dāng)該位為0時(shí),表示運(yùn)行于ARM狀態(tài)。
(5)運(yùn)行模式位M[4:0]:MO,Ml、M2、M3、M4是模式位。這些位決定了處理器的運(yùn)行
模式。具體含義如表2-2所示:
表2-2運(yùn)行模式位0]的具體含義
M[4:0]處理器模式可訪問的寄存器
Obi0000用戶模式PC.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版學(xué)校校辦工廠風(fēng)險(xiǎn)管理與承包經(jīng)營(yíng)合同3篇
- 二零二五年度木材市場(chǎng)行情預(yù)測(cè)與分析咨詢合同4篇
- 2025年度環(huán)保材料研發(fā)與生產(chǎn)合作合同范本4篇
- 2025版旅游度假區(qū)租賃與旅游服務(wù)合作協(xié)議3篇
- 2025年度智能交通系統(tǒng)保密管理與服務(wù)合同
- 二零二五年度科技型中小企業(yè)貸款合同
- 2025年度知識(shí)產(chǎn)權(quán)授權(quán)委托書簽訂協(xié)議
- 2025年度門面出租合同終止與租賃合同終止后合同解除及違約賠償協(xié)議
- 2025年度銀行存款賬戶遠(yuǎn)程開戶服務(wù)協(xié)議
- 2025年度私人房產(chǎn)使用權(quán)轉(zhuǎn)讓與智能家居系統(tǒng)安裝合同
- 2024年全國(guó)體育專業(yè)單獨(dú)招生考試數(shù)學(xué)試卷試題真題(含答案)
- 北師大版小學(xué)三年級(jí)上冊(cè)數(shù)學(xué)第五單元《周長(zhǎng)》測(cè)試卷(含答案)
- DB45T 1950-2019 對(duì)葉百部生產(chǎn)技術(shù)規(guī)程
- 2025屆河北省衡水市衡水中學(xué)高考仿真模擬英語試卷含解析
- 新修訂《保密法》知識(shí)考試題及答案
- 電工基礎(chǔ)知識(shí)培訓(xùn)課程
- 住宅樓安全性檢測(cè)鑒定方案
- 廣東省潮州市潮安區(qū)2023-2024學(xué)年五年級(jí)上學(xué)期期末考試數(shù)學(xué)試題
- 市政道路及設(shè)施零星養(yǎng)護(hù)服務(wù)技術(shù)方案(技術(shù)標(biāo))
- 選擇性必修一 期末綜合測(cè)試(二)(解析版)2021-2022學(xué)年人教版(2019)高二數(shù)學(xué)選修一
- 《論語》學(xué)而篇-第一課件
評(píng)論
0/150
提交評(píng)論