日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀] 一.存儲器的字與半字1.從偶數(shù)地址開始的連續(xù)的兩個字節(jié)構(gòu)成一個半字。2.能被4整除的地址的連續(xù)4個字階構(gòu)成一個字ARM指令的長度剛好是一個字,Thumb指令的長度剛好是一個半字二.存儲器的存儲方式(半字

一.存儲器的字與半字

1.從偶數(shù)地址開始的連續(xù)的兩個字節(jié)構(gòu)成一個半字。

2.能被4整除的地址的連續(xù)4個字階構(gòu)成一個字

ARM指令的長度剛好是一個字,Thumb指令的長度剛好是一個半字

二.存儲器的存儲方式(半字對齊,字對齊)

1.半字對齊:存放一個數(shù)據(jù)的地址如果能被二整除,則它是半字對齊。反之,則是非半字對齊。

2.字對齊:存放一個數(shù)據(jù)的地址如果能被四整除,則它是字對齊。否則,它是非字對齊。

三.ARM處理器狀態(tài):

ARM有兩種處理器狀態(tài):ARM狀態(tài),Thumb狀態(tài)。

1.ARM狀態(tài):32位。處理器執(zhí)行字方式的ARM指令。

2.Thumb狀態(tài):16位。處理器執(zhí)行半字方式的Thumb指令。

注:兩個狀態(tài)之間的切換是不會影響處理器的模式或寄存器的內(nèi)容。

它們之間是如何進行切換的。

使用BX指令在ARM和Thumb狀態(tài)之間進行切換。

(但是,所有的異常處理都是在ARM狀態(tài)中執(zhí)行。如果異常發(fā)生在Thumb狀態(tài)中,處理器會切換到ARM狀態(tài)。在異常處理返回時,自動切換回Thumb狀態(tài)。)

從ARM狀態(tài)切換到Thumb狀態(tài)的程序代碼:

具體程序來說明處理器狀態(tài):

程序1:

ADRR0,TST+1

注:偽指令A(yù)DR將寄存器內(nèi)容的地址存入寄存器中。這里將地址TST+1存入R0中,這樣就加載了轉(zhuǎn)移地址并且設(shè)置了最近有效位。

BXR0

注:此時,R0中數(shù)值的第0位是1,所以該語句執(zhí)行完處理器切換進入Thumb狀態(tài),開始執(zhí)行Thumb指令

(我們可以在AXD下看到此時狀態(tài)寄存器的T位被置1.)

CODE16

注:

A匯編器需要知道什么時候產(chǎn)生ARM代碼,什么時候產(chǎn)生Thumb代碼。

B偽指令CODE16定義一下的程序被編譯成Thumb模式,即后面的就是16位的Thumb指令了。

C.偽指令CODE32定義一下的程序?qū)⒈痪幾g成ARM模式,即后面的就是32位的ARM指令。

D偽指令CODE16和CODE32只是指示匯編器后面指令的類型,并不產(chǎn)生任何代碼,也不進行程序狀態(tài)的切換。

程序2:

注:

在Thumb狀態(tài)下,調(diào)用軟中斷:SWI 0XAB

在ARM狀態(tài)下,調(diào)用軟中斷:SWI 0X123456

四.ARM處理器模式:

ARM體系結(jié)構(gòu)支持7中處理器模式:用戶模式,快中斷模式,中斷模式,管理模式,中止模式,未定義模式和系統(tǒng)模式。

1.快中斷模式,中斷模式,管理模式,中止模式和未定義模式。它們稱為異常模式。

A.異常模式既可以通過程序切換進入外,也可以有特定的異常進入。

B.當特定的異常出現(xiàn)時,處理器進入相應(yīng)餓模式。每種模式都有某些附加的寄存器。

2.系統(tǒng)模式和用戶模式,它們不能由異常進入。并且使用與用戶模式相同的寄存器。

A.系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪問用戶模式的寄存器比較方便。

五.ARM體系的存儲系統(tǒng)

1.ARM7存儲系統(tǒng)概要:

1>.ARM7處理器采用馮.諾依曼結(jié)構(gòu),指令和數(shù)據(jù)共用一條32位數(shù)據(jù)總線(采用指令,數(shù)據(jù)和I/O統(tǒng)一編址)。

只有裝載,保存和交換指令可訪問存儲器中的數(shù)據(jù)。


Tiger補充:

計算機結(jié)構(gòu)說明:

1>馮諾依曼結(jié)構(gòu):把代碼作為一中特殊的數(shù)據(jù)來操作。指令總線和數(shù)據(jù)總線及其存儲區(qū)域是統(tǒng)一的。

2>哈佛結(jié)構(gòu):指令總線和數(shù)據(jù)總線及其存儲區(qū)域是分開獨立的。

2>.ARM芯片一般在處理器核和外部存儲器之間有

一個存儲器管理部件。

存儲器管理部件的作用是將局部總線的信號和時序轉(zhuǎn)換為現(xiàn)實的外部總線信號和時序。

注:各芯片生產(chǎn)商制定了自己的外部總線的信號和時序。

3.地址空間

1>ARM地址空間有232個8位字節(jié)的地址空間。也可以看作是230個32位字或231個16位半字。

2>如果在取指操作時地址發(fā)生溢出,只要沒有執(zhí)行預(yù)取的無效指令,就不會導(dǎo)致異常。

4.存儲器格式:

1>地址空間的規(guī)則要求一個字或半字要求連續(xù)存儲。

Eg:位于地址0x02處的字,它所包含的字節(jié)位于地址0x02,0x03,0x04,0x5

同理位于地址0x02處的半字,它所包含的字節(jié)位于地址0x02,0x03.

2>存儲器系統(tǒng)有兩種映射機制:

A.小端存儲器系統(tǒng):

數(shù)據(jù)的高字節(jié)存放在高地址中。

B.大端存儲器系統(tǒng):

數(shù)據(jù)的高字節(jié)存放在低地址中。

3>非對齊的存儲器訪問

A.ARM結(jié)構(gòu)希望所有存儲器訪問時都對齊。即字訪問的地址是字對齊的,或半字訪問使用的地址是半字對齊的。若不滿足上述條件的即為非對齊的存儲器訪問。

B.把一個非字對齊(或非半字對齊)的地址寫入ARM狀態(tài)(或Thumb狀態(tài)的)R15寄存器中,將會引起非對齊的指令取指。

C.在一個非字對齊(或非半字對齊)的地址處讀寫一個字或半字會引起非對齊的數(shù)據(jù)訪問。

注:編程時應(yīng)該注意的問題:

ARM處理器直接支持對齊存放的半字或字數(shù)據(jù)的存取,也就是可以使用一條相應(yīng)的指令來實現(xiàn)對應(yīng)操作。如果訪問非對齊的半字或字數(shù)據(jù),將需要多條指令組合才能實現(xiàn)對應(yīng)操作,這對程序的執(zhí)行效率影響較大。因此,在C語言編程中,定義的多字節(jié)變量或結(jié)構(gòu)體,最好使其為對齊存放。


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉