首頁>Club>
6
回覆列表
  • 1 # 使用者5289371332671

    程式的兩種執行方式:

    1、CPU直接執行CPU自身能理解的機器指令;

    2、CPU執行虛擬機器程式碼,虛擬機器內部執行位元組碼;

    一般來說,第二種情形的執行效率肯定是小於第一種!

    為什麼要使用JIT技術?

    為了使CPU密集的程式在虛擬機器中執行的更快!

    JIT最基本的實現原理是什麼?

    首先將位元組碼翻譯成CPU可直接理解執行的機器指令,在記憶體中分配空間儲存翻譯後的指令,設定指令指標指向程式碼地址。

    下面結合兩個檔案(function.c,jit.c)來說明:

    看,我們做到了!

    如果不呼叫mmap,透過下面的方式是否可以直接執行程式碼呢?

    答案是:不可以!如果你編譯後執行會報錯:Segmentation fault (core dumped)

    因為mmap呼叫後,程序虛擬地址空間會多出一段區域,這段區域是可讀、可寫、可執行的,所以程式碼在這段記憶體空間是可執行的!

    但執行失敗的程式碼的問題是,你準備執行的指令是儲存在資料段空間的,資料段空間的許可權是:可讀、可寫,但是不可執行!所以這是報錯的原因。

  • 中秋節和大豐收的關聯?
  • 西蒙尼和C羅的捂襠動作是什麼意思?