[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[b-free: 1083] RE: はじめまして




> Cのランタイムの話と思われるかも知れませんが、正式にスタックとして
>使うには、CPUの実レジスタに割り当てて欲しいので、やはりOSがらみの話に
>なるかと思います。(実レジスタだったら、割り込みやタスクスイッチで
>自動的に保存されると思うので)
>
> JavaのVMはどうやって実装しているんですかね。やはりアセンブラなんで
>しょうか。(↑こちらも低レベルはスタックマシンのようですが‥)

 http://rufus.w3.org/tools/Kaffe/)
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;
とVMのレジスターにプログラムカウンターとスタックポインターを載せていますね。
でもi386のレジスターのうち5つも割り当てていいんでしょうか?

P.S.おなじスタックベースのマシーンだったらJAVAのVMのうえでForth/Mindは
走らないものでしょうか。
各OSにVMは載っているし、多くの人がVMの高速化にかかわっているので、
いったん載れば、移植性もスピードも上がると思うのですが。

落合 哲治 
ochiai@mail.cc.tohoku.ac.jp


begin 600 WINMAIL.DAT
M>)\^(A\"`0:0" `$```````!``$``0>0!@`(````I ,```````"G``$(@ <`
M& ```$E032Y-:6-R;W-O9G0@36%I;"Y.;W1E`#$(`0V ! `"`````@`"``$$
MD 8`H $```$````0`````P``, (````+``\.``````(!_P\!````10``````
M``"!*Q^DOJ,0&9UN`-T!#U0"`````&(M9G)E94!I:6IN970N;W(N:G `4TU4
M4 !B+69R965 :6EJ;F5T+F]R+FIP`````!X``C !````!0```%--5% `````
M'@`#, $````4````8BUF<F5E0&EI:FYE="YO<BYJ< `#`!4,`0````,`_@\&
M````'@`!, $````6````)V(M9G)E94!I:6IN970N;W(N:G G`````@$+, $`
M```9````4TU44#I"+492145 24E*3D54+D]2+DI0``````,``#D`````"P! 
M.@$````>`/9?`0```!0```!B+69R965 :6EJ;F5T+F]R+FIP``(!]U\!````
M10````````"!*Q^DOJ,0&9UN`-T!#U0"`````&(M9G)E94!I:6IN970N;W(N
M:G `4TU44 !B+69R965 :6EJ;F5T+F]R+FIP``````,`_5\!`````P#_7P``
M```"`?8/`0````0````````"T5(!!( !`"0```!213H@6V(M9G)E93H@,3 X
M,ET@4F4Z((+-@K:"WX+<@K6"Q #S#0$%@ ,`#@```,X'`@`9``L`, `<``,`
M2@$!(( #``X```#.!P(`&0`+````+P`#`"T!`0F `0`A````031&0S0Q0CE#
M1D%$1#$Q,4)%,D(P,# P1C1!1C0W140`<P<!`Y &`'@)```B````"P`"``$`
M```+`",```````,`)@``````"P`I```````#`"X```````,`-@``````0 `Y
M`*#^Z=F70;T!'@!P``$````D````4D4Z(%MB+69R964Z(#$P.#)=(%)E.B""
MS8*V@M^"W(*U@L0``@%Q``$````6`````;U!E]B:N4'\JZW/$=&^*P``]*]'
M[0``'@`># $````%````4TU44 `````>`!\,`0```!P```!O8VAI86E ;6%I
M;"YC8RYT;VAO:W4N86,N:G ``P`&$,2_>D,#``<0O 0``!X`"! !````90``
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
M``.%`````````P`"@ @@!@``````P ```````$8`````$(4````````#``6 
M"" &``````# ````````1@````!2A0``D X``!X`)8 (( 8``````, `````
M``!&`````%2%```!````! ```#@N, `#`": "" &``````# ````````1@``
M```!A0````````L`+X (( 8``````, ```````!&``````Z%`````````P`P
M@ @@!@``````P ```````$8`````$84````````#`#* "" &``````# ````
M````1@`````8A0```````!X`08 (( 8``````, ```````!&`````#:%```!
M`````0`````````>`$* "" &``````# ````````1@`````WA0```0````$`
M````````'@!#@ @@!@``````P ```````$8`````.(4```$````!````````
?`!X`/0`!````!0```%)%.B ``````P`--/TW``!6]X4`
`
end