Add ops to test 7 and 8 arguments.
This commit is contained in:
parent
5eb3689458
commit
b632927127
@ -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
|
||||||
|
@ -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) ->
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user