Add target register to TUPLE #164

Merged
zxq9 merged 3 commits from add-target-register-to-tuple into master 2019-05-28 21:17:16 +09:00
3 changed files with 7 additions and 6 deletions

View File

@ -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 := #{}."}
@ -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"

View File

@ -78,7 +78,7 @@ FUNCTION foo () : {tuple, []}
NOT arg124 a
TUPLE 5019186157739257888756115213149493826410
TUPLE var999 5019186157739257888756115213149493826410
ELEMENT arg148 var25 a

View File

@ -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