Add ops to test 7 and 8 arguments.

This commit is contained in:
Erik Stenman 2019-03-01 16:23:30 +01:00
parent 5eb3689458
commit b632927127
3 changed files with 106 additions and 101 deletions

View File

@ -710,20 +710,6 @@ serialize_code([B|Rest]) ->
[B | serialize_code(Rest)]; [B | serialize_code(Rest)];
serialize_code([]) -> []. serialize_code([]) -> [].
serialize_n_ints(N, Rest) ->
serialize_n_ints(N, Rest, []).
serialize_n_ints(0, Rest, Acc) ->
%% Acc is a list of binaries.
{lists:reverse(Acc), Rest};
serialize_n_ints(N, [Int|Rest], Acc) when is_integer(Int), Int >= 0 ->
serialize_n_ints(N - 1, Rest, [aeb_fate_encoding:serialize(Int)|Acc]);
serialize_n_ints(_, [], _) ->
exit(not_enough_bbs_for_switch_vn);
serialize_n_ints(_, _, _) ->
exit(bad_bbs_value_for_switch_vn).
%% 00 : stack/unused (depending on instruction) %% 00 : stack/unused (depending on instruction)
%% 01 : argN %% 01 : argN

View File

@ -137,6 +137,9 @@ ops_defs() ->
, { 'SHA256', 16#7c, 0, false,3, atomic, sha256, ""} , { 'SHA256', 16#7c, 0, false,3, atomic, sha256, ""}
, { 'BLAKE2B', 16#7d, 0, false,3, atomic, blake2b, ""} , { 'BLAKE2B', 16#7d, 0, false,3, atomic, blake2b, ""}
, { 'DUMMY7ARG', 16#f9, 7, false,3, [a,a,a,a,a,a,a], dummyarg, "Temporary dummy instruction to test 7 args."}
, { 'DUMMY8ARG', 16#fa, 8, false,3, [a,a,a,a,a,a,a,a],dummyarg, "Temporary dummy instruction to test 8 args."}
, { 'ABORT', 16#fb, 1, false, 3, [a], abort, "Abort execution (dont use all gas) with error message in Arg0."} , { 'ABORT', 16#fb, 1, false, 3, [a], abort, "Abort execution (dont use all gas) with error message in Arg0."}
, { 'EXIT', 16#fc, 1, false, 3, [a], exit, "Abort execution (use upp all gas) with error message in Arg0."} , { 'EXIT', 16#fc, 1, false, 3, [a], exit, "Abort execution (use upp all gas) with error message in Arg0."}
, { 'NOP', 16#fd, 0, false, 1, atomic, nop, "The no op. does nothing."} , { 'NOP', 16#fd, 0, false, 1, atomic, nop, "The no op. does nothing."}
@ -498,7 +501,19 @@ gen_format(#{opname := Name, format := Args}) ->
"\" \", format_arg(~w, Arg4)," "\" \", format_arg(~w, Arg4),"
"\" \", format_arg(~w, Arg5)," "\" \", format_arg(~w, Arg5),"
"\" \", format_arg(~w, Arg6)];", "\" \", format_arg(~w, Arg6)];",
[Name, NameAsString, T0, T1, T2, T3, T4, T5, T6]) [Name, NameAsString, T0, T1, T2, T3, T4, T5, T6]);
[T0, T1, T2, T3, T4, T5, T6, T7] ->
io_lib:format(
"format_op({~w, Arg0, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7}, _) ->\n"
" [\"~s \", format_arg(~w, Arg0), "
"\" \", format_arg(~w, Arg1),"
"\" \", format_arg(~w, Arg2),"
"\" \", format_arg(~w, Arg3),"
"\" \", format_arg(~w, Arg4),"
"\" \", format_arg(~w, Arg5),"
"\" \", format_arg(~w, Arg6),"
"\" \", format_arg(~w, Arg7)];",
[Name, NameAsString, T0, T1, T2, T3, T4, T5, T6, T7])
end. end.
test_asm_generator(Filename) -> test_asm_generator(Filename) ->

View File

@ -6,187 +6,187 @@
FUNCTION foo () : {tuple, []} FUNCTION foo () : {tuple, []}
RETURN RETURN
RETURNR var150 RETURNR a13
CALL foo CALL foo
CALL_R arg242 foo CALL_R arg125 foo
CALL_T foo CALL_T foo
CALL_TR a foo CALL_TR arg245 foo
JUMP 2778181099722339546444847932597842403980 JUMP 5514251025295783441695716053282666408426
JUMPIF arg71 17 JUMPIF arg196 0x12c651665
SWITCH_V2 var242 7 51 SWITCH_V2 a27 63 33
SWITCH_V3 var90 0x1bdd846f3 9 0x17cbdd6c9 SWITCH_V3 var4 0x1d61723dd 79 7
SWITCH_VN arg153 [1, 2, 3] SWITCH_VN #nv5B93FPzRHrGNmMdTDfGdd5xGZvep3MVSpJqzcQmMp59bBCv [1, 2, 3]
PUSH var118 PUSH var80
DUPA DUPA
DUP var85 DUP a
POP (| 2 | 1 | ( 4557687389579322034215261600548680294108 ) |) POP a107
STORE 0x23f57a6d7 a STORE arg183 var225
INCA INCA
INC var100 INC a25
DECA DECA
DEC var230 DEC a
ADD a111 a a ADD a217 a a
SUB 93 arg198 a140 SUB arg35 arg165 var74
MUL var240 a77 arg67 MUL 44 35 "foo"
DIV arg169 1 95 DIV 263838340369912686645632650718169038811 a24 a
MOD a241 a a MOD var113 arg80 arg207
POW arg143 a a121 POW a176 a a123
LT a252 var158 var204 LT a 78 var81
GT var141 a195 6565006908676281259280322225737939009024 GT arg19 4729414120208894485838100532547810615352 var175
EQ arg16 a166 0x8f076589 EQ 85 a arg164
ELT var117 0x8175205c 0xb659ba4a ELT a161 arg226 a168
EGT a a a EGT a131 1 var250
NEQ var105 a arg170 NEQ a85 a a83
AND a154 var183 a55 AND var255 0x294a24f6 var189
OR var103 var201 a250 OR (| 2 | 0 | ( (), (42) ) |) arg168 var107
NOT arg158 a17 NOT arg124 a
TUPLE 6 TUPLE 5019186157739257888756115213149493826410
ELEMENT integer (| 2 | 0 | ( 7875086700039857579956050953972728274596, 35 ) |) a9 a27 ELEMENT integer arg148 var25 a219
MAP_EMPTY a180 MAP_EMPTY a135
MAP_LOOKUP var76 arg238 arg180 MAP_LOOKUP a82 a a143
MAP_LOOKUPD a arg209 arg71 !<> MAP_LOOKUPD var112 arg35 a163 var112
MAP_UPDATE arg243 a13 false a MAP_UPDATE false a0 a56 a
MAP_DELETE arg237 arg138 0x16bb2da52 MAP_DELETE arg180 a var1
MAP_MEMBER a134 a49 arg231 MAP_MEMBER a { true => 4} 94
MAP_FROM_LIST a250 8 MAP_FROM_LIST () a159
NIL [ ] NIL arg91
IS_NIL 0x21968d787 5311352343894713188976994917630885293949 IS_NIL a121 var6
CONS a arg209 57 CONS arg185 "foo" a114
HD arg242 a HD a150 var124
TL a var194 TL arg223 a
LENGTH var70 a236 LENGTH var216 a143
STR_EQ (| 5 | 2 | (1, "foo", ()) |) 50 (| 2 | 1 | ( 0x17a9e8119 ) |) STR_EQ { 203961992615221001243597889146034217896 => 0x1f53a1843} 281217554184165828643225535776787296845 a177
STR_JOIN a1 a85 <> STR_JOIN a a 7144184027126178769820155907121270843348
INT_TO_STR a82 var203 INT_TO_STR var238 a
ADDR_TO_STR arg159 a199 ADDR_TO_STR a arg216
STR_REVERSE a36 a STR_REVERSE a174 #nv5B93FPzRHrGNmMdTDfGdd5xGZvep3MVSpJqzcQmMp59bBCv
INT_TO_ADDR var161 arg92 INT_TO_ADDR arg127 var207
VARIANT var252 a162 a 0xb1912372 VARIANT a a 0x1f7b72200 a
VARIANT_TEST 11 arg173 [ (), 3 ] VARIANT_TEST a26 arg217 a
VARIANT_ELEMENT a103 a201 a VARIANT_ELEMENT a86 arg103 arg108
BITS_NONEA BITS_NONEA
BITS_NONE [ (| 2 | 1 | ( { 0xa0ee2284 => [ 6 ]} ) |) ] BITS_NONE a
BITS_ALLA BITS_ALLA
BITS_ALL "foo" BITS_ALL a164
BITS_ALL_N a a77 BITS_ALL_N a221 arg135
BITS_SET a53 var101 arg213 BITS_SET arg150 a48 { 0x1a715e2a6 => 3}
BITS_CLEAR arg142 a var157 BITS_CLEAR arg98 a arg164
BITS_TEST var125 ([(| 2 | 1 | ( 4 ) |) ]) 3084289254269705189827835600187262322355 BITS_TEST a a242 (| 5 | 2 | (1, "foo", ()) |)
BITS_SUM var197 a BITS_SUM a244 a71
BITS_OR a var35 ("foo") BITS_OR var20 var186 a
BITS_AND a1 a8 arg213 BITS_AND a187 4 arg203
BITS_DIFF a var24 a BITS_DIFF var200 arg247 var20
ADDRESS 8 ADDRESS a237
BALANCE 2 BALANCE a231
ORIGIN var208 ORIGIN arg216
CALLER 90 CALLER a27
GASPRICE a188 GASPRICE arg119
BLOCKHASH arg18 BLOCKHASH arg110
BENEFICIARY a BENEFICIARY var163
TIMESTAMP arg84 TIMESTAMP a
GENERATION arg110 GENERATION 242795038229506961431398379342231049652
MICROBLOCK { 3 => 7374978216136870915189251106310661704403} MICROBLOCK arg43
DIFFICULTY var58 DIFFICULTY var24
GASLIMIT a GASLIMIT arg220
GAS { true => 0x10acb2ff2} GAS var35
LOG0 var170 arg108 LOG0 a a85
LOG1 a [] arg209 LOG1 arg94 arg86 arg208
LOG2 a var170 arg8 a LOG2 a113 (| 5 | 2 | (1, "foo", ()) |) arg238 var108
LOG3 arg213 a #nv5B93FPzRHrGNmMdTDfGdd5xGZvep3MVSpJqzcQmMp59bBCv [ "foo", [] ] var204 LOG3 arg255 arg15 arg211 var139 arg44
LOG4 a57 a 0x237fcc40c arg167 arg230 var59 LOG4 #nv5B93FPzRHrGNmMdTDfGdd5xGZvep3MVSpJqzcQmMp59bBCv a247 a 9 a38 a
DEACTIVATE DEACTIVATE
SPEND arg243 var172 SPEND #nv5B93FPzRHrGNmMdTDfGdd5xGZvep3MVSpJqzcQmMp59bBCv var136
ORACLE_REGISTER a arg223 var193 arg60 a111 a182 ORACLE_REGISTER arg29 48 ((| 5 | 2 | (1, "foo", ()) |)) arg65 { <> => false} <>
ORACLE_QUERY ORACLE_QUERY
@ -220,9 +220,13 @@ FUNCTION foo () : {tuple, []}
BLAKE2B BLAKE2B
DUMMY7ARG a a 7607708484837907159893701471377343595877 (| 2 | 0 | ( [], [ 45, { 1 => 3441201581501946066216994494994943246334} ] ) |) a0 var56 "foo"
DUMMY8ARG 3673679924816289365509492271980889822579 a69 arg242 var237 a175 arg106 () var255
ABORT a ABORT a
EXIT (0x34df4f98) EXIT var120
NOP NOP