Re: [問題] API的調用如何和虛擬機溝通
※ 引述《hougzou (學無止境,啥時才摔到底?)》之銘言:
: ※ 引述《superstition (big bomb)》之銘言:
: : 感謝您的回覆 , 更確切的說 , 依照 bytecode 所用的
: : java 指令集中 , 有無類似 x86 的 int 指令來達成
: : 真正所提供的服務 , 我看了 java 的指令集似乎沒有
: : 類似指令 , 所以我想知道 API 到底是透過啥麼動作
: : (如何利用指令集)來告訴 JVM 此 API 所想要的真正服務.
: 股溝大神告訴我...
: http://www.j2medev.com/Article/Class1/Class11/200703/4317.html
: 雖然是KVM,不過應該可以稍為回答你的疑惑。
感謝大大的幫助.
後來可能有點眉目 , 以下是小弟見解:
後來往 JNI 方向查找 , 發現自己寫的 native 方法就是成為和 jvm 作出請求的關鍵
動作 , 於是找了 System.loadlibrary , 不知有無看眼花 , 跟到最後發現在
ClassLoader.java 裡有個 load 方法也有 native 關鍵字 , 我猜想此 load 就是
和 jvm 作出真正請求的動作 , 它也是載入 dll , 至於 native 所宣告的方法在呼叫
有無特別地方 , 反組譯看一下是使用 invokeXXXX 系列的指令和一般呼叫成員方法沒
啥差異 , 我猜想可能有特定訊息在解譯執行 invokeXXXX 時可以呼叫到 native library.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.240.108.19
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 6 之 6 篇):