From e671111f2849c714fbbc8c213b130a15f0f24d46 Mon Sep 17 00:00:00 2001 From: Juan Munoz Date: Fri, 14 Jun 2024 19:42:21 -0300 Subject: [PATCH] div set flags test --- programs/div/div_set_eq_flag.zasm | 15 +++++++++++++++ programs/div/div_set_gt_flag.zasm | 15 +++++++++++++++ tests/integration_test.rs | 17 +++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 programs/div/div_set_eq_flag.zasm create mode 100644 programs/div/div_set_gt_flag.zasm diff --git a/programs/div/div_set_eq_flag.zasm b/programs/div/div_set_eq_flag.zasm new file mode 100644 index 00000000..e05ec1fb --- /dev/null +++ b/programs/div/div_set_eq_flag.zasm @@ -0,0 +1,15 @@ + .text + .file "div_set_eq_flag.zasm" + .globl __entry +__entry: +.func_begin0: + ; EQ is set if the quotient is not zero + add 25, r0, r1 + add 6, r0, r2 + div! r1, r2, r3, r4 + sstore r0, r3 + ret +.func_end0: + + .note.GNU-stack + .rodata diff --git a/programs/div/div_set_gt_flag.zasm b/programs/div/div_set_gt_flag.zasm new file mode 100644 index 00000000..873903e6 --- /dev/null +++ b/programs/div/div_set_gt_flag.zasm @@ -0,0 +1,15 @@ + .text + .file "div_set_gt_flag.zasm" + .globl __entry +__entry: +.func_begin0: + ; GT is set if the reminder is not zero. + add 25, r0, r1 + add 6, r0, r2 + div! r1, r2, r3, r4 + sstore r0, r3 + ret +.func_end0: + + .note.GNU-stack + .rodata diff --git a/tests/integration_test.rs b/tests/integration_test.rs index aa6e4eb4..9e472374 100644 --- a/tests/integration_test.rs +++ b/tests/integration_test.rs @@ -326,6 +326,23 @@ fn test_div_zero_asm() { run_program(&bin_path); } +#[test] +fn test_div_set_eq_flag() { + let bin_path = make_bin_path_asm("div_set_eq_flag"); + let (_, vm) = run_program(&bin_path); + + assert!(vm.flag_eq); +} + +#[test] +fn test_div_set_gt_flag() { + let bin_path = make_bin_path_asm("div_set_gt_flag"); + run_program(&bin_path); + let (_, vm) = run_program(&bin_path); + + assert!(vm.flag_gt); +} + #[test] fn test_more_complex_program_with_conditionals() { let bin_path = make_bin_path_asm("add_and_sub_with_conditionals");