package org.jerlang.erts.emulator.op;
import org.jerlang.Module;
import org.jerlang.Process;
import org.jerlang.erts.emulator.Instruction;
import org.jerlang.erts.erlang.Error;
import org.jerlang.type.Float;
import org.jerlang.type.List;
import org.jerlang.type.Term;
/**
*
*/
public class Fmove {
public static Term execute(Process proc, Module m, Instruction i, List params) {
Term src = i.arg(0);
Term dst = i.arg(1);
if ((src instanceof Float) && dst.isFRegister()) {
proc.setFR(dst.toRegisterIndex(), src.toFloat());
return null;
} else if (src.isFRegister() && dst.isXRegister()) {
Float srcValue = proc.getFR(src.toRegisterIndex().toInt());
proc.setX(dst.toRegisterIndex(), srcValue);
return null;
} else {
throw new Error("Not implemented: " + i);
}
}
}