PC是一個16位的計數器, 用於存放一條要執行的指令地址,定址範圍為64kB,PC有自動加1功能,即完成了一條指令的執行後,其內容自動加1。PC本身並沒有地址,因而不可定址,使用者無法對它進行讀寫,但是可以透過轉移、呼叫、返回等指令改變其內容,以控制程式按我們的要求去執行。復位後為0000H(16位) 資料指標(DPTR) 資料指標為16位暫存器,程式設計時,既可以按16位暫存器來使用,也可以按兩個8位暫存器來使用,即高位位元組暫存器DPH和低位位元組DPL。DPTR主要是用來儲存16位地址,當對64kB外部資料儲存器定址時,可作為間址暫存器使用,此時,使用如下兩條指令: MOVX A, @DPTR MOVX @DPTR, A 在訪問程式儲存器時,DPTR可用來作基址暫存器,採用基址+變址定址方式訪問程式儲存器,這條指令常用於讀取程式儲存器內的表格資料。MOVC A, @A+@DPTR 復位後為0000H(16位)
PC暫存器用來儲存指向下一條指令的地址,也即將要執行的指令程式碼。由執行引擎讀取下一條指令。
pc暫存器它是一塊很小的記憶體空間,幾乎可以忽略不記。也是執行速度最快的儲存區域。
在JVM規範中,每個執行緒都有它自己的程式計數器,是執行緒私有的,生命週期與執行緒的生命週期保持一致。
任何時間一個執行緒都只有一個方法在執行,也就是所謂的當前方法。程式計數器會儲存當前執行緒正在執行的Java方法的JVM指令地址;或者,
如果是在執行native方法,則是未指定值(undefined)。
它是程式控制流的指示器,,分支、迴圈、跳轉、異常處理、執行緒恢復等基礎功能都需要依賴這個計數器來完成。
位元組碼直譯器工作時就是透過改變這個計數器的值來選取下一條需要執行的位元組碼指令。
它是唯一一個在Java虛擬機器規範中沒有規定任何OutotMemoryError情況的區域。
使用PC暫存器儲存位元組碼指令地址有什麼用呢? 為什麼使用PC暫存器記錄當前執行緒的執行地址呢?
因為CPU需要不停的切換各個執行緒,這時候切換回來以後,就得知道接著從哪開始繼續執行。
JVM的位元組碼直譯器就需要透過改變PC暫存器的值來明確下一條應該執行什麼樣的位元組碼指令。
PC暫存器為什麼會被設定為執行緒私有?
為了能夠準確地記錄各個執行緒正在執行的當前位元組碼指令地址,最好的辦法自然是為每一個執行緒都分配一個PC暫存器,這樣一來各個執行緒之間便可以進行獨立計算,從而不會出現相互干擾的情況。
pc是程式控制指標?程式計數器PC(program Counter) 程式計數器在物理上是獨立的,它不屬於特殊內部資料儲存器塊中。
PC是一個16位的計數器, 用於存放一條要執行的指令地址,定址範圍為64kB,PC有自動加1功能,即完成了一條指令的執行後,其內容自動加1。PC本身並沒有地址,因而不可定址,使用者無法對它進行讀寫,但是可以透過轉移、呼叫、返回等指令改變其內容,以控制程式按我們的要求去執行。復位後為0000H(16位) 資料指標(DPTR) 資料指標為16位暫存器,程式設計時,既可以按16位暫存器來使用,也可以按兩個8位暫存器來使用,即高位位元組暫存器DPH和低位位元組DPL。DPTR主要是用來儲存16位地址,當對64kB外部資料儲存器定址時,可作為間址暫存器使用,此時,使用如下兩條指令: MOVX A, @DPTR MOVX @DPTR, A 在訪問程式儲存器時,DPTR可用來作基址暫存器,採用基址+變址定址方式訪問程式儲存器,這條指令常用於讀取程式儲存器內的表格資料。MOVC A, @A+@DPTR 復位後為0000H(16位)