程序計數器PC詳解

2021-01-19 電子產品世界

馮 ·諾伊曼計算機體系結構的主要內容之一就是「程序預存儲,計算機自動執行」!處理器要執行的程序(指令序列)都是以二進位代碼序列方式預存儲在計算機的存儲器中,處理器將這些代碼逐條地取到處理器中再解碼、執行,以完成整個程序的執行。為了保證程序能夠連續地執行下去,CPU必須具有某些手段來確定下一條取指指令的地址。程序計數器PC )正是起到這種作用,所以通常又稱之為『指令計數器』。CPU總是按照PC的指向對指令序列進行取指、解碼和執行,也就是說,最終是PC 決定了程序運行流向。故而,程序計數器(PC )屬於特別功能寄存器範疇,不能自由地用於存儲其他運算數據。

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

本文引用地址:http://www.eepw.com.cn/article/201611/321962.htm


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

(解釋什麼是字對齊什麼是半字對齊)存儲器是計算機中用於記憶數據信息的電子裝置,它通過記憶「高/低」電平記憶「1/0」能記憶 1 位「1/0」數據的電子單元,稱之為存儲元,計算機中的存儲器通常將每8 個這樣的存儲元組成一個單元,稱之為字節,字節是處理器訪問存儲器的最小單位。ARM 處理器對存儲器空間的訪問解析度以字節為最小單位;ARM 處理器還支持 16bit 數據(2 字節)的存儲器訪問和 32bit數據(4 子節)的存儲器訪問。在ARM 中將32 位的數據稱之為『字』,將 16 位的數據稱之為『半字』。
ARM 處理器在對於「字」/「半字」數據進行訪問時,對數據的存儲格式是有要求的。要求被訪問的「半字」必須存放在存儲器緊鄰的兩個字節單元,並且首字節地址必須能被2整除,這樣存儲的 16bit 數據稱為 『半字對齊』存儲數據,16bit 數據這樣的存儲方式稱為 『半字對齊』存儲。類似的,ARM 處理器在進「字」數據訪問時,要求被訪問的「字」必須 存放在存儲器緊鄰的4 個字節單元,並且首字節地址必須能被4 整除,這樣存儲的32bit 數 據稱為『字對齊』存儲數據,32bit 數據這樣的存儲方式稱為『字對齊』存儲。


能被2 整除數據的二進位表示,其最低位一定是『0』;能被4 整除數據的二進位表示,
其最低兩位一定是『00』。ARM 體系要求32 位長的ARM 指令在存儲器中必須字對齊存儲,
16 位長的 Thumb 指令必須半字對齊存儲。因此,在ARM 狀態下,R15的值總是能被4 整
除,也就是R15 寄存器的最低2 位總是 0;Thumb 狀態下,R15 的值總是能被2 整除,也就是R15 寄存器的最低位總是0。


相關焦點

  • 塵埃粒子計數器與氣溶膠發生器在高效檢漏中的區別
    在工程上,對於大於100級的淨化系統一般採用的粒子計數器的最小粒徑通道為0.3μm。所以,被檢高效過濾器在上風側的微粒濃度受控粒徑為≥0.5μm,其濃度必須≥3.5×104pc/L,而一般大氣塵的濃度為5.3×104-2.5×105pc/L,這到了粒子計數器的讀數上限範圍。
  • 12進位計數器設計方案匯總(五款模擬電路設計原理及程序分享)
    打開APP 12進位計數器設計方案匯總(五款模擬電路設計原理及程序分享) 發表於 2018-01-17 15:05:38 本文為大家帶來五種不同的
  • 控制器由指令寄存器IR、程序計數器PC和操作控制器三個部件組成!
    控制器是指揮計算機的各個部件按照指令的功能要求協調工作的部件,是計算機的神經中樞和指揮中心,由指令寄存器IR、程序計數器PC和操作控制器三個部件組成,對協調整個電腦有序工作極為重要。存儲器可以指主存、高速緩存或寄存器棧等用來保存當前正在執行的一條指令。
  • 西門子PLC的計數器指令,高速計數器的用法
    計數器可使用計數器指令對內部程序事件和外部過程事件進行計數。● 輸入參數 CU 的值從 0 變為 1 時,「加計數」計數器 (CTU) 就會加 1。● 輸入參數 CD 的值從 0 變為 1 時,「減計數」計數器 (CTD) 就會減 1。
  • PLC案例詳解子程序調用,圖文並茂,太實用啦
    今天我們以三菱PLC為例,學習一下什麼是子程序。一套程序可以分為主程序區,還有子程序區,中斷程序區等等,主程序區的程序是無時無刻都會掃描執行的,而子程序還有中斷程序就必須觸發某些條件,子程序才會執行。如上圖,監控PLC的2個特殊寄存器,D8011是掃描程序的最短時間,D8012是掃描程序的最長時間,底下是程序的步數,沒有寫程序時,掃描周期平均需要5ms,隨著程序增加,掃描周期不斷變長;到16000步時,平均的掃描周期達到了25ms。由此可見減少掃描程序的必要性,下面我們來看一下,子程序的具體使用方法。
  • 單片機定時器/計數器基本原理
    一、定時器/計數器的功能 AT89S52單片機定時器/計數器的基本部件是兩個8位的計數器(T1計數器分為高8位TH1和低8位TL1,T0計數器的高8位是TH0,低8位是TL0)。如圖1所示。 當它用作對外部事件計數時,計數器接相應的外部輸入引腳T0(P3.4)或T1(P3.5)並在每個機器周期的S5P2時採樣,當採樣到1—0的負跳變時,計數器加1。 二、定時器/計數器的結構 AT89S52單片機內部的定時/計數器的結構如圖2所示。
  • 51單片機計數器與定時器的區別
    計數器和定時器的本質是相同的,他們都是對單片機中產生的脈衝進行計數,只不過計數器是單片機外部觸發的脈衝,定時器是單片機內部在晶振的觸發下產生的脈衝。當他們的脈衝間隔相同的時候,計數器和定時器就是一個概念。  在定時器和計數器中都有一個溢出的概念,那什麼是溢出了。
  • lcd12864中文資料匯總(12864引腳說明及功能_特性參數及驅動程序...
    由該模塊構成的液晶顯示方案與同類型的圖形點陣液晶顯示模塊相比,不論硬體電路結構或顯示程序都要簡潔得多,且該模塊的價格也略低於相同點陣的圖形液晶模塊。   ●地址計數器AC地址計數器是用來貯存DDRAM/CGRAM之一的地址,它可由設定指令暫存器來改變,之後只要讀取或是寫入DDRAM/CGRAM的值時,地址計數器的值就會自動加一,當RS為「0」時而R/W為「1」時,地址計數器的值會被讀取到DB6——DB0中。
  • 通過51單片機定時器/計數器實現精確延時
    TO和Tl的工作方式及運行狀態是由TMOD和TCON兩個特殊功能寄存器控制的,而TMOD和TCON是由用戶所編的程序控制的。    定時器的核心是一個加l計數器,加l計數器的脈衝有兩個來源:一個是系統時鐘振蕩器,另一個是外部脈衝,計數器對脈衝進行計數。
  • 西門子S7-1200高速計數器功能介紹及應用舉例
    3高速計數器尋址 CPU將每個高速計數器的測量值,存儲在輸入過程映像區內,數據類型為32位雙整型有符號數,用戶可以在設備組態中修改這些存儲地址,在程序中可直接訪問這些地址,但由於過程映像區受掃描周期影響,在一個掃描周期內,此數值不會發生變化,但高速計數器中的實際值有可能會在一個周期內變化,用戶可通過讀取外設地址的方式,讀取到當前時刻的實際值。
  • 51單片機---定時器 計數器
    1/12;作為計數器使用時,通過引腳T0(P3.4)或T1(P3.5)對外部脈衝信號進行計數,當輸入的外部脈衝信號發生從1到0的負跳變時,計數器的值就自動加1;計數器的最高頻率一般是時鐘振蕩頻率的1/24;由此可知,不論是定時器還是計數器工作方式,定時器T0和T1均不佔用CPU的時間,除非定時器/計數器T0和T1溢出,才可能引起
  • S7-200 smart 高速計數器功能介紹
    PLC的計數器是工控領域中常用的計數功能,而高速計數器是可對標準計數器無法控制的高速事件進行計數,標準計數器以受PLC掃描時間限制的較低速率運行。而高速計數器能夠接受高頻信號,提高了計數的速度。高速計數器的運行高速計數器可用作鼓式定時器的驅動,其中有一個裝有增量軸編碼器的軸,以恆定速度旋轉。該軸編碼器每轉提供指定數量的計數值以及一個復位脈衝。來自軸編碼器的時鐘和復位脈衝為高速計數器提供輸入。
  • 數字電路實驗15——環形計數器
    設計一個4位右循環一個1的環形計數器
  • Java中的高效計數器全收錄
    您可能經常需要計數器來了解資料庫或文本文件中某些內容(例如單詞)的出現頻率。通過使用Java中的HashMap可以輕鬆實現計數器。本文比較了實現計數器的不同方法。最後,將得出一個有效的結論。1.天真版計數器天真版的,它可以通過以下方式實現:String s = "one two three two three three";String[] sArr = s.split(" ");//naive
  • 機械計數器結構及原理圖
    計數是一種最簡單基本的運算,計數器就是實現這種運算的邏輯電路,計數器在數字系統中主要是對脈衝的個數進行計數,以實現測量、計數和控制的功能,同時兼有分頻功能,計數器是由基本的計數單元和一些控制門所組成,計數單元則由一系列具有存儲信息功能的各類觸發器構成,這些觸發器有RS觸發器、T觸發器、D觸發器及JK觸發器等。
  • 異步計數器真值表
    異步計數器使用串聯連接在一起的觸發器,使輸入時鐘脈衝看起來通過計數器紋波 異步計數器可以有2 n -1可能的計數狀態,例如用於4位計數器的MOD-16(0-15)使其成為頻分應用的理想選擇。但也可以使用基本的異步計數器配置來構造計數狀態小於其最大輸出數的特殊計數器。例如,modulo或MOD計數器。
  • 分享PLC編程元件計數器的使用方法及應用實例
    1)增計數指令CTU計數指令在CU端輸入脈衝上升沿,計數器的當前值增1計數。當前值大於或等於預設值(PV)時,計數器狀態置1,其觸點動作。當前值累加的最大值為32767。復位輸入R有效時,計數器狀態復位(置0),當前值清零,其觸點恢復常態。例圖見圖2。
  • 74ls90設計60進位計數器
    計數器種類很多。按構成計數器中的各觸發器是否使用一個時鐘脈衝源來分,有同步計數器和異步計數器。根據計數制的不同,分為二進位計數器、十進位計數器和任意進位計數器。根據計數器的增減趨勢,又分為加法、減法和可逆計數器。還有可預製數和可變程序功能計數器等等。目前,無論是TTL還是CMOS集成電路,都有品種較齊全的中規模集成計數器。
  • 電子奇趣 · 很酷的輻射蓋革計數器
    我們最熟悉的電子-核工程跨界產品就是蓋革計數器了。從黃色塑膠外殼的成品產品到封裝在中古軍品鋁盒中的DIY作品,蓋革計數器擁有各種各樣的變形。今天的這個個人作品同樣繼承了這一點,而且更加漂亮。然後,可以使用一小塊穿孔板將Mini Metro和米字管和蓋革計數器的脈衝輸出連接到一起。我還從蓋革計數器上拆下了電池組,然後用穿孔板重新將其連接到公用的6V電池組上。在穿上熱縮管並將所有東西焊接在一起之後,就可以開始為單片機準備固件程序了。最終實現的方法使用中斷來記錄來自傳感器板的脈衝事件。它只需要過去30秒內的脈衝數平均值,可以輕鬆檢測到每分鐘最大可顯示的9999個計數。
  • 電子計數器的使用_電子計數器功能
    打開APP 電子計數器的使用_電子計數器功能 發表於 2019-09-26 10:22:41   電子計數器的使用   ①當給該儀器通電後,應預熱一定的時間,晶振頻率的穩定度才可達到規定的指標,對E312A型通用電子計數器預熱約2h。