作者superstition (big bomb)
看板java
标题Re: [问题] API的调用如何和虚拟机沟通
时间Sat Jun 30 04:29:59 2007
※ 引述《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