diff --git a/src/main.rs b/src/main.rs index 45150a3..efe5336 100644 --- a/src/main.rs +++ b/src/main.rs @@ -475,10 +475,10 @@ fn generate_assembly_linux_x64_block(operations: &Vec, functions: &Ve data.code += "\tmov rax, [queue+8*r12]\n"; data.code += "\tcmp qword rax, [queue+8*r12+8]\n"; data.code += "\tcmovg rbx, rcx\n"; - data.code += "\tmov qword [queue+8*r13], rbx\n"; data.code += "\tadd r12, 2\n"; - data.code += "\tinc r13\n"; data.code += ASSEMBLY_LINUX_X64_TRY_RESET_QUEUE; + data.code += "\tmov qword [queue+8*r13], rbx\n"; + data.code += "\tinc r13\n"; } "<" => { @@ -487,10 +487,10 @@ fn generate_assembly_linux_x64_block(operations: &Vec, functions: &Ve data.code += "\tmov rax, [queue+8*r12]\n"; data.code += "\tcmp qword rax, [queue+8*r12+8]\n"; data.code += "\tcmovl rbx, rcx\n"; - data.code += "\tmov qword [queue+8*r13], rbx\n"; data.code += "\tadd r12, 2\n"; - data.code += "\tinc r13\n"; data.code += ASSEMBLY_LINUX_X64_TRY_RESET_QUEUE; + data.code += "\tmov qword [queue+8*r13], rbx\n"; + data.code += "\tinc r13\n"; } ">=" => { @@ -499,10 +499,10 @@ fn generate_assembly_linux_x64_block(operations: &Vec, functions: &Ve data.code += "\tmov rax, [queue+8*r12]\n"; data.code += "\tcmp qword rax, [queue+8*r12+8]\n"; data.code += "\tcmovge rbx, rcx\n"; - data.code += "\tmov qword [queue+8*r13], rbx\n"; data.code += "\tadd r12, 2\n"; - data.code += "\tinc r13\n"; data.code += ASSEMBLY_LINUX_X64_TRY_RESET_QUEUE; + data.code += "\tmov qword [queue+8*r13], rbx\n"; + data.code += "\tinc r13\n"; } "<=" => { @@ -511,10 +511,10 @@ fn generate_assembly_linux_x64_block(operations: &Vec, functions: &Ve data.code += "\tmov rax, [queue+8*r12]\n"; data.code += "\tcmp qword rax, [queue+8*r12+8]\n"; data.code += "\tcmovle rbx, rcx\n"; - data.code += "\tmov qword [queue+8*r13], rbx\n"; data.code += "\tadd r12, 2\n"; - data.code += "\tinc r13\n"; data.code += ASSEMBLY_LINUX_X64_TRY_RESET_QUEUE; + data.code += "\tmov qword [queue+8*r13], rbx\n"; + data.code += "\tinc r13\n"; } _ => todo!("intrinsic {} {}:{}", name, line, col) } diff --git a/tests/comparisons.qbl b/tests/comparisons.qbl new file mode 100644 index 0000000..5388d4f --- /dev/null +++ b/tests/comparisons.qbl @@ -0,0 +1,31 @@ +//valid,true +//false +//true +//false +//false +//false +//true +//true +//:END: + +function bool => str boolToStr +{ + if + { + "true" + } + else + { + "false" + } +} + +1 0 > boolToStr println +1 0 < boolToStr println +1 0 >= boolToStr println +1 0 <= boolToStr println + +1 1 > boolToStr println +1 1 < boolToStr println +1 1 >= boolToStr println +1 1 <= boolToStr println \ No newline at end of file