parent
							
								
									a9820677e9
								
							
						
					
					
						commit
						fb46ede3ca
					
				
							
								
								
									
										13
									
								
								src/state.rs
								
								
								
								
							
							
						
						
									
										13
									
								
								src/state.rs
								
								
								
								
							|  | @ -104,7 +104,7 @@ fn lw_string_format (l: &mut State, num_args: usize) -> usize { | |||
| 	assert_eq! (f_string, "%0.9f"); | ||||
| 	let num = l.reg (1).as_float ().unwrap (); | ||||
| 	
 | ||||
| 	let output = format! ("{}", num); | ||||
| 	let output = format! ("{:0.9}", num); | ||||
| 	
 | ||||
| 	*l.reg_mut (0) = Value::from (output); | ||||
| 	1 | ||||
|  | @ -683,6 +683,8 @@ impl <'a> State <'a> { | |||
| 					for i in (offset)..(offset - 1 + b) { | ||||
| 						self.registers [i] = self.registers [i + 1 + a].take (); | ||||
| 					} | ||||
| 					
 | ||||
| 					self.top = popped_frame.register_offset - 1 + b - 1; | ||||
| 				} | ||||
| 				else { | ||||
| 					// Return from the entire program
 | ||||
|  | @ -690,8 +692,9 @@ impl <'a> State <'a> { | |||
| 				} | ||||
| 			}, | ||||
| 			Instruction::Return0 => { | ||||
| 				self.stack.pop (); | ||||
| 				let popped_frame = self.stack.pop ().unwrap (); | ||||
| 				next_pc = self.stack.last ().unwrap ().program_counter; | ||||
| 				self.top = popped_frame.register_offset - 1 + 0; | ||||
| 			}, | ||||
| 			Instruction::Return1 (a) => { | ||||
| 				let a = usize::try_from (*a).unwrap (); | ||||
|  | @ -715,6 +718,8 @@ impl <'a> State <'a> { | |||
| 				// Shift output register down
 | ||||
| 				let offset = popped_frame.register_offset; | ||||
| 				self.registers [offset - 1] = self.registers [offset + a].take (); | ||||
| 				
 | ||||
| 				self.top = popped_frame.register_offset - 1 + 1; | ||||
| 			}, | ||||
| 			Instruction::SetField (a, b, c, k_flag) => { | ||||
| 				let value = if *k_flag { | ||||
|  | @ -812,8 +817,8 @@ impl <'a> State <'a> { | |||
| 				// Skip the PC increment
 | ||||
| 				return Ok (None); | ||||
| 			}, | ||||
| 			Instruction::Test (a, _k) => { | ||||
| 				if self.reg (*a).is_truthy() { | ||||
| 			Instruction::Test (a, k) => { | ||||
| 				if self.reg (*a).is_truthy() != *k { | ||||
| 					next_pc += 1; | ||||
| 				} | ||||
| 			}, | ||||
|  |  | |||
|  | @ -2,3 +2,6 @@ print () | |||
| print ("asdf") | ||||
| print (math.sqrt (16)) | ||||
| print (math.sqrt (16.0)) | ||||
| 
 | ||||
| local N = tonumber (arg and arg [1]) or 1000 | ||||
| print (N) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 _
						_