1. 程式人生 > 實用技巧 >PC暫存器

PC暫存器

一、概述

在這裡插入圖片描述
JVM中的程式計數暫存器(Program Counter Register)中,Register的命名源於CPU的暫存器,暫存器儲存指令相關的現場資訊,CPU只有把資料裝載到暫存器才能夠執行。
這裡,並非是廣義上所指的物理暫存器,或許將其翻譯為PC計數器(或指令計數器)會更加貼切(也稱為程式鉤子,指向程式中的指令行號地址),並且也不容易引起一些不必要的誤會。JVM中的PC暫存器是對物理PC暫存器的一種抽象模擬,是一種軟體層面的概念。

二、作用

在這裡插入圖片描述
PC暫存器用來儲存下一條指令的地址,也即將要執行的指令程式碼。由執行引擎讀取下一條指令。

三、PC Register介紹

  • 它是一塊很小的記憶體空間,幾乎可以忽略不計。也是執行速度最快的儲存區域。
  • 在JVM規範中,每個執行緒都有它自己的程式計數器,是執行緒私有的,生命週期與執行緒的生命週期保持一致。
  • 任何時間一個執行緒都只有一個方法在執行,也就是所謂的當前方法。程式計數器會儲存當前執行緒正在執行的Java方法的JVM指令地址;或者如果是在執行native方法,則是為指定值(undefined)(因為PC暫存器是java層面的,本地方法棧是C/C++層面的)。
  • 它是程式控制流的指示器,分支、迴圈、跳轉、異常處理、執行緒恢復等基礎功能都需要依賴這個計數器來完成。
  • 位元組碼直譯器工作時就是通過改變這個計數器的值來選取下一條需要執行的位元組碼指令。
  • 它是唯一一個在java虛擬機器規範中沒有規定任何OutOfMemoryError情況的區域。

四、舉例說明

在這裡插入圖片描述
指令地址:
PC暫存器指向指令地址。
執行引擎根據PC暫存器中的地址讀取指令。
執行引擎會操作區域性變量表,運算元棧等,同時會把讀取的位元組碼指令翻譯成機器指令給CPU執行。
在這裡插入圖片描述