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)];
|
||||
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)
|
||||
%% 01 : argN
|
||||
|
@ -137,8 +137,11 @@ ops_defs() ->
|
||||
, { 'SHA256', 16#7c, 0, false,3, atomic, sha256, ""}
|
||||
, { 'BLAKE2B', 16#7d, 0, false,3, atomic, blake2b, ""}
|
||||
|
||||
, {'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."}
|
||||
|
||||
, { '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."}
|
||||
, { '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."}
|
||||
%% FUNCTION 16#fe "Function declaration and entrypoint."
|
||||
%% EXTEND 16#ff "Reserved for future extensions beyond one byte opcodes."
|
||||
@ -498,7 +501,19 @@ gen_format(#{opname := Name, format := Args}) ->
|
||||
"\" \", format_arg(~w, Arg4),"
|
||||
"\" \", format_arg(~w, Arg5),"
|
||||
"\" \", 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.
|
||||
|
||||
test_asm_generator(Filename) ->
|
||||
|
@ -6,187 +6,187 @@
|
||||
FUNCTION foo () : {tuple, []}
|
||||
RETURN
|
||||
|
||||
RETURNR var150
|
||||
RETURNR a13
|
||||
|
||||
CALL foo
|
||||
|
||||
CALL_R arg242 foo
|
||||
CALL_R arg125 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
|
||||
|
||||
DUP var85
|
||||
DUP a
|
||||
|
||||
POP (| 2 | 1 | ( 4557687389579322034215261600548680294108 ) |)
|
||||
POP a107
|
||||
|
||||
STORE 0x23f57a6d7 a
|
||||
STORE arg183 var225
|
||||
|
||||
INCA
|
||||
|
||||
INC var100
|
||||
INC a25
|
||||
|
||||
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_NONE [ (| 2 | 1 | ( { 0xa0ee2284 => [ 6 ]} ) |) ]
|
||||
BITS_NONE a
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
@ -220,9 +220,13 @@ FUNCTION foo () : {tuple, []}
|
||||
|
||||
BLAKE2B
|
||||
|
||||
DUMMY7ARG a a 7607708484837907159893701471377343595877 (| 2 | 0 | ( [], [ 45, { 1 => 3441201581501946066216994494994943246334} ] ) |) a0 var56 "foo"
|
||||
|
||||
DUMMY8ARG 3673679924816289365509492271980889822579 a69 arg242 var237 a175 arg106 () var255
|
||||
|
||||
ABORT a
|
||||
|
||||
EXIT (0x34df4f98)
|
||||
EXIT var120
|
||||
|
||||
NOP
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user