vm: add PACKMAP/PACKSTRUCT, extend UNPACK

See neo-project/neo-vm#443.
This commit is contained in:
Roman Khimov 2021-11-12 14:10:41 +03:00
parent 0a7f8afcea
commit 3e6ce3c221
6 changed files with 145 additions and 50 deletions

View file

@ -176,6 +176,8 @@ func _() {
_ = x[MIN-185]
_ = x[MAX-186]
_ = x[WITHIN-187]
_ = x[PACKMAP-190]
_ = x[PACKSTRUCT-191]
_ = x[PACK-192]
_ = x[UNPACK-193]
_ = x[NEWARRAY0-194]
@ -200,7 +202,7 @@ func _() {
_ = x[CONVERT-219]
}
const _Opcode_name = "PUSHINT8PUSHINT16PUSHINT32PUSHINT64PUSHINT128PUSHINT256PUSHAPUSHNULLPUSHDATA1PUSHDATA2PUSHDATA4PUSHM1PUSH0PUSH1PUSH2PUSH3PUSH4PUSH5PUSH6PUSH7PUSH8PUSH9PUSH10PUSH11PUSH12PUSH13PUSH14PUSH15PUSH16NOPJMPJMP_LJMPIFJMPIF_LJMPIFNOTJMPIFNOT_LJMPEQJMPEQ_LJMPNEJMPNE_LJMPGTJMPGT_LJMPGEJMPGE_LJMPLTJMPLT_LJMPLEJMPLE_LCALLCALL_LCALLACALLTABORTASSERTTHROWTRYTRY_LENDTRYENDTRY_LENDFINALLYRETSYSCALLDEPTHDROPNIPXDROPCLEARDUPOVERPICKTUCKSWAPROTROLLREVERSE3REVERSE4REVERSENINITSSLOTINITSLOTLDSFLD0LDSFLD1LDSFLD2LDSFLD3LDSFLD4LDSFLD5LDSFLD6LDSFLDSTSFLD0STSFLD1STSFLD2STSFLD3STSFLD4STSFLD5STSFLD6STSFLDLDLOC0LDLOC1LDLOC2LDLOC3LDLOC4LDLOC5LDLOC6LDLOCSTLOC0STLOC1STLOC2STLOC3STLOC4STLOC5STLOC6STLOCLDARG0LDARG1LDARG2LDARG3LDARG4LDARG5LDARG6LDARGSTARG0STARG1STARG2STARG3STARG4STARG5STARG6STARGNEWBUFFERMEMCPYCATSUBSTRLEFTRIGHTINVERTANDORXOREQUALNOTEQUALSIGNABSNEGATEINCDECADDSUBMULDIVMODPOWSQRTSHLSHRNOTBOOLANDBOOLORNZNUMEQUALNUMNOTEQUALLTLEGTGEMINMAXWITHINPACKUNPACKNEWARRAY0NEWARRAYNEWARRAY_TNEWSTRUCT0NEWSTRUCTNEWMAPSIZEHASKEYKEYSVALUESPICKITEMAPPENDSETITEMREVERSEITEMSREMOVECLEARITEMSPOPITEMISNULLISTYPECONVERT"
const _Opcode_name = "PUSHINT8PUSHINT16PUSHINT32PUSHINT64PUSHINT128PUSHINT256PUSHAPUSHNULLPUSHDATA1PUSHDATA2PUSHDATA4PUSHM1PUSH0PUSH1PUSH2PUSH3PUSH4PUSH5PUSH6PUSH7PUSH8PUSH9PUSH10PUSH11PUSH12PUSH13PUSH14PUSH15PUSH16NOPJMPJMP_LJMPIFJMPIF_LJMPIFNOTJMPIFNOT_LJMPEQJMPEQ_LJMPNEJMPNE_LJMPGTJMPGT_LJMPGEJMPGE_LJMPLTJMPLT_LJMPLEJMPLE_LCALLCALL_LCALLACALLTABORTASSERTTHROWTRYTRY_LENDTRYENDTRY_LENDFINALLYRETSYSCALLDEPTHDROPNIPXDROPCLEARDUPOVERPICKTUCKSWAPROTROLLREVERSE3REVERSE4REVERSENINITSSLOTINITSLOTLDSFLD0LDSFLD1LDSFLD2LDSFLD3LDSFLD4LDSFLD5LDSFLD6LDSFLDSTSFLD0STSFLD1STSFLD2STSFLD3STSFLD4STSFLD5STSFLD6STSFLDLDLOC0LDLOC1LDLOC2LDLOC3LDLOC4LDLOC5LDLOC6LDLOCSTLOC0STLOC1STLOC2STLOC3STLOC4STLOC5STLOC6STLOCLDARG0LDARG1LDARG2LDARG3LDARG4LDARG5LDARG6LDARGSTARG0STARG1STARG2STARG3STARG4STARG5STARG6STARGNEWBUFFERMEMCPYCATSUBSTRLEFTRIGHTINVERTANDORXOREQUALNOTEQUALSIGNABSNEGATEINCDECADDSUBMULDIVMODPOWSQRTSHLSHRNOTBOOLANDBOOLORNZNUMEQUALNUMNOTEQUALLTLEGTGEMINMAXWITHINPACKMAPPACKSTRUCTPACKUNPACKNEWARRAY0NEWARRAYNEWARRAY_TNEWSTRUCT0NEWSTRUCTNEWMAPSIZEHASKEYKEYSVALUESPICKITEMAPPENDSETITEMREVERSEITEMSREMOVECLEARITEMSPOPITEMISNULLISTYPECONVERT"
var _Opcode_map = map[Opcode]string{
0: _Opcode_name[0:8],
@ -369,28 +371,30 @@ var _Opcode_map = map[Opcode]string{
185: _Opcode_name[923:926],
186: _Opcode_name[926:929],
187: _Opcode_name[929:935],
192: _Opcode_name[935:939],
193: _Opcode_name[939:945],
194: _Opcode_name[945:954],
195: _Opcode_name[954:962],
196: _Opcode_name[962:972],
197: _Opcode_name[972:982],
198: _Opcode_name[982:991],
200: _Opcode_name[991:997],
202: _Opcode_name[997:1001],
203: _Opcode_name[1001:1007],
204: _Opcode_name[1007:1011],
205: _Opcode_name[1011:1017],
206: _Opcode_name[1017:1025],
207: _Opcode_name[1025:1031],
208: _Opcode_name[1031:1038],
209: _Opcode_name[1038:1050],
210: _Opcode_name[1050:1056],
211: _Opcode_name[1056:1066],
212: _Opcode_name[1066:1073],
216: _Opcode_name[1073:1079],
217: _Opcode_name[1079:1085],
219: _Opcode_name[1085:1092],
190: _Opcode_name[935:942],
191: _Opcode_name[942:952],
192: _Opcode_name[952:956],
193: _Opcode_name[956:962],
194: _Opcode_name[962:971],
195: _Opcode_name[971:979],
196: _Opcode_name[979:989],
197: _Opcode_name[989:999],
198: _Opcode_name[999:1008],
200: _Opcode_name[1008:1014],
202: _Opcode_name[1014:1018],
203: _Opcode_name[1018:1024],
204: _Opcode_name[1024:1028],
205: _Opcode_name[1028:1034],
206: _Opcode_name[1034:1042],
207: _Opcode_name[1042:1048],
208: _Opcode_name[1048:1055],
209: _Opcode_name[1055:1067],
210: _Opcode_name[1067:1073],
211: _Opcode_name[1073:1083],
212: _Opcode_name[1083:1090],
216: _Opcode_name[1090:1096],
217: _Opcode_name[1096:1102],
219: _Opcode_name[1102:1109],
}
func (i Opcode) String() string {