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執行。
相關文章
- CS、IP和PC暫存器
- CS 暫存器 和 IP 暫存器
- 暫存器
- JVM-執行時資料區之PC暫存器JVM
- 暫存器定址和暫存器間接定址的區別
- 為什麼Modbus的只讀暫存器被稱為“輸入暫存器(Input Registers)”而不是“輸出暫存器”
- 【STM32】【暫存器】暫存器位讀寫方式配置系統時鐘
- 暫存
- CPU 中通用暫存器的作用
- 新手分享_再談FS暫存器
- 暫存器指定為寫0或者1
- STM32 GPIO 暫存器的配置
- 10.1 除錯事件讀取暫存器除錯事件
- 6.常見暫存器和指令
- 程式設計中暫存器的使用程式設計
- 第五章:通用暫存器是()。
- iOS彙編基礎(二)暫存器iOS
- 暫存器,觸發器,三極體小結觸發器
- Intel 8086微處理器暫存器結構Intel
- Java讀取暫存器資料的方法Java
- STM32暫存器操作、模板構建
- 一文搞懂 ARM 64 系列: 暫存器
- 程式分析與優化 - 8 暫存器分配優化
- 基於暫存器呼叫的軟體加速
- 【C/C++】 C++暫存器優化C++優化
- 【STC8H】STC8系列專有的特殊的暫存器位——PW_2暫存器的最高位 EAXFR
- 函式呼叫暫存器及棧幀結構函式
- CPU中跟蹤後繼指令地址的暫存器
- Git清空暫存區Git
- 關於STM32的BSRR(埠位設定/清除暫存器) 和 BRR(埠位清除暫存器) 的理解(初學32)
- 3. 暫存器(記憶體) | 問題 3.7 - 3.10記憶體
- STM32F103點亮LED暫存器方式
- 暫存一些模板
- 重新整理彙編—————暫存器的基本概念[二]
- 開源暫存器檢視小工具 類unicode++Unicode
- 7628 EDCCA認證暫存器修改(認證自適應)
- 058線性反饋移位暫存器產生m序列
- 例項七— 8位移位暫存器的設計