<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 程序計數器PC詳解

程序計數器PC詳解

作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò ) 收藏
馮 ·諾伊曼計算機體系結構的主要內容之一就是“程序預存儲,計算機自動(dòng)執行”!處理器要執行的程序(指令序列)都是以二進(jìn)制代碼序列方式預存儲在計算機的存儲器中,處理器將這些代碼逐條地取到處理器中再譯碼、執行,以完成整個(gè)程序的執行。為了保證程序能夠連續地執行下去,CPU必須具有某些手段來(lái)確定下一條取指指令的地址。程序計數器PC )正是起到這種作用,所以通常又稱(chēng)之為‘指令計數器’。CPU總是按照PC的指向對指令序列進(jìn)行取指、譯碼和執行,也就是說(shuō),最終是PC 決定了程序運行流向。故而,程序計數器(PC )屬于特別功能寄存器范疇,不能自由地用于存儲其他運算數據。

在程序開(kāi)始執行前,將程序指令序列的起始地址,即程序的第一條指令所在的內存單元地址送入PC,CPU按照 PC的指示從內存讀取第一條指令(取指)。當執行指令時(shí),CPU自動(dòng)地修改PC的內容,即每執行一條指令PC增加一個(gè)量,這個(gè)量等于指令所含的字節數(指令字節數),使 PC總是指向下一條將要取指的指令地址。由于大多數指令都是按順序來(lái)執行的,所以修改PC 的過(guò)程通常只是簡(jiǎn)單的對PC 加“指令字節數”。
當程序轉移時(shí),轉移指令執行的最終結果就是要改變PC的值,此PC值就是轉去的目 標地址。處理器總是按照PC 指向取指、譯碼、執行,以此實(shí)現了程序轉移。

本文引用地址:http://dyxdggzs.com/article/201611/321962.htm


ARM 處理器中使用R15 作為PC,它總是指向取指單元,并且ARM 處理器中只有一個(gè)PC 寄存器,被各模式共用。R15 有32 位寬度(下述標記為R15[31:0],表示R15 的‘第31位’到‘第0位),ARM 處理器可以直接尋址4GB的地址空間(2^32 = 4G )。

(解釋什么是字對齊什么是半字對齊)存儲器是計算機中用于記憶數據信息的電子裝置,它通過(guò)記憶“高/低”電平記憶“1/0”能記憶 1 位“1/0”數據的電子單元,稱(chēng)之為存儲元,計算機中的存儲器通常將每8 個(gè)這樣的存儲元組成一個(gè)單元,稱(chēng)之為字節,字節是處理器訪(fǎng)問(wèn)存儲器的最小單位。ARM 處理器對存儲器空間的訪(fǎng)問(wèn)分辨率以字節為最小單位;ARM 處理器還支持 16bit 數據(2 字節)的存儲器訪(fǎng)問(wèn)和 32bit數據(4 子節)的存儲器訪(fǎng)問(wèn)。在A(yíng)RM 中將32 位的數據稱(chēng)之為‘字’,將 16 位的數據稱(chēng)之為‘半字’。
ARM 處理器在對于“字”/“半字”數據進(jìn)行訪(fǎng)問(wèn)時(shí),對數據的存儲格式是有要求的。要求被訪(fǎng)問(wèn)的“半字”必須存放在存儲器緊鄰的兩個(gè)字節單元,并且首字節地址必須能被2整除,這樣存儲的 16bit 數據稱(chēng)為 ‘半字對齊’存儲數據,16bit 數據這樣的存儲方式稱(chēng)為 ‘半字對齊’存儲。類(lèi)似的,ARM 處理器在進(jìn)“字”數據訪(fǎng)問(wèn)時(shí),要求被訪(fǎng)問(wèn)的“字”必須 存放在存儲器緊鄰的4 個(gè)字節單元,并且首字節地址必須能被4 整除,這樣存儲的32bit 數 據稱(chēng)為‘字對齊’存儲數據,32bit 數據這樣的存儲方式稱(chēng)為‘字對齊’存儲。


能被2 整除數據的二進(jìn)制表示,其最低位一定是‘0’;能被4 整除數據的二進(jìn)制表示,
其最低兩位一定是‘00’。ARM 體系要求32 位長(cháng)的ARM 指令在存儲器中必須字對齊存儲,
16 位長(cháng)的 Thumb 指令必須半字對齊存儲。因此,在A(yíng)RM 狀態(tài)下,R15的值總是能被4 整
除,也就是R15 寄存器的最低2 位總是 0;Thumb 狀態(tài)下,R15 的值總是能被2 整除,也就是R15 寄存器的最低位總是0。



關(guān)鍵詞: 程序計數器P

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>