added floats, negative numbers
This commit is contained in:
parent
8aee85680a
commit
cef2217c9e
7 changed files with 79 additions and 82 deletions
|
@ -19,7 +19,7 @@ pub struct VMMemoryString {
|
|||
}
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct VMMemoryNumber {
|
||||
pub value: i64,
|
||||
pub value: f64,
|
||||
pub variable_id: u32,
|
||||
}
|
||||
#[derive(Debug, Clone)]
|
||||
|
@ -206,7 +206,7 @@ fn do_operation_operation(registers: &mut Vec<Register>, memory: &mut Vec<VMMemo
|
|||
result = VMMemory::Number(VMMemoryNumber { value: num1.value * num2.value, variable_id: 0 });
|
||||
},
|
||||
13 => {
|
||||
if num2.value == 0 {
|
||||
if num2.value == 0.0 {
|
||||
let err = create_error(&format!("Division by zero"), operation.pos, ErrorType::MathError, ErrorSubType::DivisionByZero);
|
||||
print_error(&err, &ctx);
|
||||
process::exit(1);
|
||||
|
@ -214,7 +214,7 @@ fn do_operation_operation(registers: &mut Vec<Register>, memory: &mut Vec<VMMemo
|
|||
result = VMMemory::Number(VMMemoryNumber { value: num1.value / num2.value, variable_id: 0 });
|
||||
},
|
||||
14 => {
|
||||
result = VMMemory::Number(VMMemoryNumber { value: num1.value.pow(num2.value as u32), variable_id: 0 });
|
||||
result = VMMemory::Number(VMMemoryNumber { value: num1.value.powf(num2.value), variable_id: 0 });
|
||||
},
|
||||
15 => {
|
||||
result = VMMemory::Number(VMMemoryNumber { value: num1.value % num2.value, variable_id: 0 });
|
||||
|
@ -428,7 +428,7 @@ impl Machine {
|
|||
},
|
||||
4 => {
|
||||
//LDB
|
||||
self.memory.push(VMMemory::Boolean(VMMemoryBoolean { value: operation.arg2 != 0, variable_id: 0 }));
|
||||
self.memory.push(VMMemory::Boolean(VMMemoryBoolean { value: operation.arg2 != 0.0, variable_id: 0 }));
|
||||
set_register(&mut self.registers, Register { id: operation.arg1, pointer: self.memory.len() - 1 });
|
||||
},
|
||||
5 => {
|
||||
|
@ -454,7 +454,7 @@ impl Machine {
|
|||
},
|
||||
6 => {
|
||||
//LDN
|
||||
if operation.arg2 > 0 {
|
||||
if operation.arg2 > 0.0 {
|
||||
self.memory.push(VMMemory::Table(VMMemoryTable { values: vec![], variable_id: 0 }));
|
||||
set_register(&mut self.registers, Register { id: operation.arg1, pointer: self.memory.len() - 1 });
|
||||
} else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue