From 880cf573aad76cdb87ce60904fe0e7d825c4de77 Mon Sep 17 00:00:00 2001 From: Ulf Norell Date: Tue, 28 May 2019 11:24:38 +0200 Subject: [PATCH 1/3] Add a target register to TUPLE instruction --- src/aeb_fate_generate_ops.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/aeb_fate_generate_ops.erl b/src/aeb_fate_generate_ops.erl index e1f91c0..3dd490d 100644 --- a/src/aeb_fate_generate_ops.erl +++ b/src/aeb_fate_generate_ops.erl @@ -84,7 +84,7 @@ ops_defs() -> , { 'AND', 16#26, false, 3, [a,a,a], and_op, {boolean, boolean}, boolean, "Arg0 := Arg1 and Arg2."} , { 'OR', 16#27, false, 3, [a,a,a], or_op, {boolean, boolean}, boolean, "Arg0 := Arg1 or Arg2."} , { 'NOT', 16#28, false, 3, [a,a], not_op, {boolean}, boolean, "Arg0 := not Arg1."} - , { 'TUPLE', 16#29, false, 3, [ii], tuple, {integer}, tuple, "Create a tuple of size = Arg0. Elements on stack."} + , { 'TUPLE', 16#29, false, 3, [a,ii], tuple, {integer}, tuple, "Arg0 := tuple of size = Arg1. Elements on stack."} , { 'ELEMENT', 16#2a, false, 3, [a,a,a], element_op, {integer, tuple}, any, "Arg1 := element(Arg2, Arg3)."} , { 'SETELEMENT', 16#2b, false, 3, [a,a,a,a], setelement, {integer, tuple, any}, tuple, "Arg0 := a new tuple similar to Arg2, but with element number Arg1 replaced by Arg3."} , { 'MAP_EMPTY', 16#2c, false, 3, [a], map_empty, {}, map, "Arg0 := #{}."} -- 2.30.2 From f115feb16d369934913e5af75a9f3e332f2b41f5 Mon Sep 17 00:00:00 2001 From: Ulf Norell Date: Tue, 28 May 2019 11:53:13 +0200 Subject: [PATCH 2/3] Print state variables as `storeN` instead of `var-N` --- src/aeb_fate_generate_ops.erl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/aeb_fate_generate_ops.erl b/src/aeb_fate_generate_ops.erl index 3dd490d..26c9c4a 100644 --- a/src/aeb_fate_generate_ops.erl +++ b/src/aeb_fate_generate_ops.erl @@ -441,6 +441,7 @@ gen_asm_pp(Module, Path, Ops) -> "format_arg(_, {immediate, I}) ->\n" " aeb_fate_data:format(I);\n" "format_arg(a, {arg, N}) -> io_lib:format(\"arg~~p\", [N]);\n" + "format_arg(a, {var, N}) when N < 0 -> io_lib:format(\"store~~p\", [-N]);\n" "format_arg(a, {var, N}) -> io_lib:format(\"var~~p\", [N]);\n" "format_arg(a, {stack, 0}) -> \"a\".\n\n" "lookup(Name, Symbols) ->\n" -- 2.30.2 From 9cfd369c5ddc32d1e20233559051562b042c208f Mon Sep 17 00:00:00 2001 From: Ulf Norell Date: Tue, 28 May 2019 12:54:10 +0200 Subject: [PATCH 3/3] Update tests --- test/asm_code/all_instructions.fate | 2 +- test/asm_code/tuple.fate | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/test/asm_code/all_instructions.fate b/test/asm_code/all_instructions.fate index 51bb195..b7e3f63 100644 --- a/test/asm_code/all_instructions.fate +++ b/test/asm_code/all_instructions.fate @@ -78,7 +78,7 @@ FUNCTION foo () : {tuple, []} NOT arg124 a - TUPLE 5019186157739257888756115213149493826410 + TUPLE var999 5019186157739257888756115213149493826410 ELEMENT arg148 var25 a diff --git a/test/asm_code/tuple.fate b/test/asm_code/tuple.fate index baedffa..d9b75ec 100644 --- a/test/asm_code/tuple.fate +++ b/test/asm_code/tuple.fate @@ -1,13 +1,13 @@ FUNCTION make_0tuple():{tuple, []} ;; BB : 0 - TUPLE 0 + TUPLE a 0 RETURN FUNCTION make_2tuple(integer, integer):{tuple, [integer, integer]} ;; BB : 0 PUSH arg0 PUSH arg1 - TUPLE 2 + TUPLE a 2 RETURN FUNCTION make_5tuple(integer, integer, integer, integer, integer): @@ -18,14 +18,14 @@ FUNCTION make_5tuple(integer, integer, integer, integer, integer): PUSH arg2 PUSH arg3 PUSH arg4 - TUPLE 5 + TUPLE a 5 RETURN FUNCTION element1(integer, integer): integer ;; BB : 0 PUSH arg0 PUSH arg1 - TUPLE 2 + TUPLE a 2 ELEMENT a 1 a RETURN -- 2.30.2