[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[b-free: 1084] Re^2: はじめまして
すいません。 MS Outlook97 使ったら化けたみたいです。
>Cのランタイムの話と思われるかも知れませんが、正式にスタックとして
>使うには、CPUの実レジスタに割り当てて欲しいので、やはりOSがらみの話に
>なるかと思います。(実レジスタだったら、割り込みやタスクスイッチで
>自動的に保存されると思うので)
> JavaのVMはどうやって実装しているんですかね。やはりアセンブラなんで
>しょうか。(↑こちらも低レベルはスタックマシンのようですが‥)
freeなJava VMであるkaffe0.92ではmachine.cで
/* Misc stuff */
Hjava_lang_Object* exceptionObject;
void
virtualMachine(methods* meth, slots* arg, slots* retval)
{
Hjava_lang_Object* mobj;
vmException mjbuf;
accessFlags methaccflags;
char* str;
/* If these can be kept in registers then things will go much
* better.
*/
register bytecode* code;
register slots* lcl;
register slots* sp;
register uintp pc;
register uintp npc;
とCPUのレジスターにVMのプログラムカウンターとスタックポインターを載せていますね。
でもi386のレジスターのうち5つも割り当てていいんでしょうか?
(http://rufus.w3.org/tools/Kaffe/)
P.S.おなじスタックベースのマシーンだったらJAVAのVMのうえでForth/Mindは
走らないものでしょうか。
各OSにVMは載っているし、多くの人がVMの高速化にかかわっているので、
いったん載れば、移植性もスピードも上がると思うのですが。
----
落合 哲治 ochiai@mail.cc.tohoku.ac.jp