internal static Cpu.Status FREE(Script vm) { var srx = new SRX(vm, is_jump: false); int address = vm.cpu.registers[srx.dst]; return(Heap.Free(vm, address)); }
internal static Cpu.Status HALT(Script vm) { var srx = new SRX(vm, is_jump: false); int status_code = vm.cpu.registers[srx.dst]; vm.Halt(status_code); return(Cpu.Status.OK); }
internal static Cpu.Status NEGF(Script vm) { var srx = new SRX(vm, is_jump: false); float f0 = Float32.FromInt(vm.cpu.registers[srx.dst]); vm.cpu.registers[srx.dst] = Float32.ToInt(-f0); return(Cpu.Status.OK); }
internal static Cpu.Status NEG(Script vm) { var srx = new SRX(vm, is_jump: false); int dst = vm.cpu.registers[srx.dst]; vm.cpu.registers[srx.dst] = -dst; return(Cpu.Status.OK); }
internal static Cpu.Status ALLOC(Script vm) { var srx = new SRX(vm, is_jump: false); int size = vm.cpu.registers[srx.dst]; int address = Heap.Alloc(vm, size); vm.cpu.registers[Registers.EAX] = address; return(Cpu.Status.OK); }
internal static Cpu.Status CVTFW(Script vm) { var srx = new SRX(vm, is_jump: false); float value = Float32.FromInt(vm.cpu.registers[srx.dst]); // Floor float value to convert to int vm.cpu.registers[srx.dst] = (int)value; return(Cpu.Status.OK); }
internal static Cpu.Status CVTWF(Script vm) { var srx = new SRX(vm, is_jump: false); // Convert word to floating point float value = (float)vm.cpu.registers[srx.dst]; // Store floating point representation in int value vm.cpu.registers[srx.dst] = Float32.ToInt(value); return(Cpu.Status.OK); }
internal static Cpu.Status PUSH(Script vm) { var srx = new SRX(vm, is_jump: false); vm.cpu.registers[Registers.ESP] -= 1; int stack_ptr = vm.cpu.registers[Registers.ESP]; int word = vm.cpu.registers[srx.dst]; vm.WriteWord(word, stack_ptr); return(Cpu.Status.OK); }
private void VisualizeEnerdyButton_Click(object sender, RoutedEventArgs e) { SetUpSRXPropertirs(); SRX = new SRX(random, SRXProperties, currentScope, false); var scopes = SRX.VisualizeEnergy(); energyScope = scopes[0]; currentScope = scopes[1]; previousScope = currentScope; EnergyImage.Source = Converters.BitmapToImageSource(energyScope.StructureBitmap); StructureImage.Source = Converters.BitmapToImageSource(currentScope.StructureBitmap); EnableXRStart(); }
private void StartSRXButton_Click(object sender, RoutedEventArgs e) { MCSelected = false; SRXSelected = true; DisableCA(); DisableMC(); SetUpSRXPropertirs(); this.SRX = new SRX(random, SRXProperties, currentScope, true); previousScope = currentScope; currentScope.IsFull = false; dispatcherTimer.Start(); }
internal static Cpu.Status POP(Script vm) { var srx = new SRX(vm, is_jump: false); int stack_ptr = vm.cpu.registers[Registers.ESP]; if (stack_ptr > Script.MAX_MEMORY) { return(Cpu.Status.STACK_UNDERFLOW); } int word = vm.ReadWord(stack_ptr); vm.cpu.registers[Registers.ESP] += 1; vm.cpu.registers[srx.dst] = word; return(Cpu.Status.OK); }
internal static Cpu.Status RET(Script vm) { var srx = new SRX(vm, is_jump: true); int address = vm.cpu.registers[srx.dst]; if (address == -1) { // Returning to -1 address means the procedure // was called from native code, so we pause // then VM so that native code execution may continue. vm.cpu.status = Cpu.Status.OK; vm.cpu.eip += SRX.SIZE; vm.Halt(1); return(Cpu.Status.OK); } vm.cpu.eip = address; // Jump to address return(Cpu.Status.OK); }