NestedVM
http://www.brianweb.net/personal/publications.php
スライドでは、メモリを int として表現するとなっていたけれど、
浮動小数点数の扱いはどうするんだろう?
int配列のビットパターンを効率よく floatやdouble に変換するテクニックがあるのだろうか?
-
-
- -
-
http://darcs.brianweb.net/nestedvm/src/org/ibex/nestedvm/ Interpreter.java
// Floating Point Registers private int[] fpregs = new int[32]; // 24-31 - unused // 23 - conditional bit // 18-22 - unused // 12-17 - cause bits (unimplemented) // 7-11 - enables bits (unimplemented) // 2-6 - flags (unimplemented) // 0-1 - rounding mode (only implemented for fixed point conversions) private final double getDouble(int r) { return Double.longBitsToDouble(((fpregs[r+1]&0xffffffffL) << 32) | (fpregs[r]&0xffffffffL)); } private final void setDouble(int r, double d) { long l = Double.doubleToLongBits(d); fpregs[r+1] = (int)(l >>> 32); fpregs[r] = (int)l; } private final float getFloat(int r) { return Float.intBitsToFloat(fpregs[r]); } private final void setFloat(int r, float f) { fpregs[r] = Float.floatToRawIntBits(f); }
これみたい。