summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/demo.sh2
-rw-r--r--src/test/run_power.ml6
2 files changed, 7 insertions, 1 deletions
diff --git a/src/demo.sh b/src/demo.sh
new file mode 100755
index 00000000..bcc7b3b0
--- /dev/null
+++ b/src/demo.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+./run_power.native --interactive --file ../../../rsem/idl/power/binary/main.bin
diff --git a/src/test/run_power.ml b/src/test/run_power.ml
index 6f90adca..0369ac83 100644
--- a/src/test/run_power.ml
+++ b/src/test/run_power.ml
@@ -75,6 +75,8 @@ let init_reg () =
]
;;
+let eager_eval = ref true
+
let args = [
("--file", Arg.Set_string file, "filename binary code to load in memory");
("--data", Arg.String add_section, "name,offset,size,addr add a data section");
@@ -82,6 +84,7 @@ let args = [
("--startaddr", Arg.Set_string startaddr, "addr initial address (UNUSED)");
("--mainaddr", Arg.Set_string mainaddr, "addr address of the main section (entry point; default: 0)");
("--quiet", Arg.Clear Run_interp.debug, " do not display interpreter actions");
+ ("--interactive", Arg.Clear eager_eval , " interactive execution");
] ;;
let time_it action arg =
@@ -99,7 +102,7 @@ let get_reg reg name =
let rec fde_loop count entry mem reg prog =
debugf "\n**** cycle %d ****\n" count;
- match Run_interp.run ~entry ~mem ~reg ~eager_eval:false prog with
+ match Run_interp.run ~entry ~mem ~reg ~eager_eval:!eager_eval prog with
| false, _ -> eprintf "FAILURE\n"; exit 1
| true, (reg, mem) ->
if Big_int.eq_big_int (get_reg reg "CIA") lr_init_value then
@@ -115,6 +118,7 @@ let run () =
Arg.usage args "";
exit 1;
end;
+ if !eager_eval then Run_interp.debug := true;
let ic = open_in_bin !file in
if !sections = [] then begin
sections := [(0, in_channel_length ic, Big_int.zero_big_int)];