package org.jerlang.erts.emulator.op;
import org.jerlang.Module;
import org.jerlang.Process;
import org.jerlang.erts.emulator.Instruction;
import org.jerlang.type.BitString;
import org.jerlang.type.Integer;
import org.jerlang.type.List;
import org.jerlang.type.Term;
/**
* This opcode assumes that there is a BitString available
* in process context.
*
* Arguments:
* 1. Label
* 2. Size
* 3. Unit
* 4. Flags
* 5. Source
*
* Example:
* {bs_put_integer,{f,0},3,1,0,{x,0}}
*/
public class BsPutInteger {
public static Term execute(Process proc, Module m, Instruction i, List params) {
BitString bs = proc.bitString();
Integer size = i.arg(1).toArg(proc).toInteger();
Integer unit = i.arg(2).toArg(proc).toInteger();
Integer flags = i.arg(3).toArg(proc).toInteger();
Integer source = i.arg(4).toArg(proc).toInteger();
bs.put_integer(source, size.multiply(unit), flags);
return null;
}
}