vm: implement NEWARRAYT opcode

This commit is contained in:
Evgenii Stratonikov 2020-04-24 13:48:19 +03:00
parent d3b9aef8e2
commit 7c3d7c0261
5 changed files with 75 additions and 29 deletions

View file

@ -126,6 +126,7 @@ func _() {
_ = x[UNPACK-193]
_ = x[NEWARRAY0-194]
_ = x[NEWARRAY-195]
_ = x[NEWARRAYT-196]
_ = x[NEWSTRUCT0-197]
_ = x[NEWSTRUCT-198]
_ = x[NEWMAP-200]
@ -139,11 +140,12 @@ func _() {
_ = x[REVERSEITEMS-209]
_ = x[REMOVE-210]
_ = x[CLEARITEMS-211]
_ = x[ISTYPE-217]
_ = x[THROW-240]
_ = x[THROWIFNOT-241]
}
const _Opcode_name = "PUSHINT8PUSHINT16PUSHINT32PUSHINT64PUSHINT128PUSHINT256PUSHNULLPUSHDATA1PUSHDATA2PUSHDATA4PUSHM1PUSH0PUSH1PUSH2PUSH3PUSH4PUSH5PUSH6PUSH7PUSH8PUSH9PUSH10PUSH11PUSH12PUSH13PUSH14PUSH15PUSH16NOPJMPJMPLJMPIFJMPIFLJMPIFNOTJMPIFNOTLJMPEQJMPEQLJMPNEJMPNELJMPGTJMPGTLJMPGEJMPGELJMPLTJMPLTLJMPLEJMPLELCALLCALLLOLDPUSH1RETAPPCALLSYSCALLTAILCALLDUPFROMALTSTACKTOALTSTACKFROMALTSTACKXDROPISNULLXSWAPXTUCKDEPTHDROPDUPNIPOVERPICKROLLROTSWAPTUCKCATSUBSTRLEFTRIGHTINVERTANDORXOREQUALINCDECSIGNNEGATEABSNOTNZADDSUBMULDIVMODSHLSHRBOOLANDBOOLORNUMEQUALNUMNOTEQUALLTGTLTEGTEMINMAXWITHINSHA1SHA256HASH160HASH256CHECKSIGVERIFYCHECKMULTISIGPACKUNPACKNEWARRAY0NEWARRAYNEWSTRUCT0NEWSTRUCTNEWMAPSIZEHASKEYKEYSVALUESPICKITEMAPPENDSETITEMREVERSEITEMSREMOVECLEARITEMSTHROWTHROWIFNOT"
const _Opcode_name = "PUSHINT8PUSHINT16PUSHINT32PUSHINT64PUSHINT128PUSHINT256PUSHNULLPUSHDATA1PUSHDATA2PUSHDATA4PUSHM1PUSH0PUSH1PUSH2PUSH3PUSH4PUSH5PUSH6PUSH7PUSH8PUSH9PUSH10PUSH11PUSH12PUSH13PUSH14PUSH15PUSH16NOPJMPJMPLJMPIFJMPIFLJMPIFNOTJMPIFNOTLJMPEQJMPEQLJMPNEJMPNELJMPGTJMPGTLJMPGEJMPGELJMPLTJMPLTLJMPLEJMPLELCALLCALLLOLDPUSH1RETAPPCALLSYSCALLTAILCALLDUPFROMALTSTACKTOALTSTACKFROMALTSTACKXDROPISNULLXSWAPXTUCKDEPTHDROPDUPNIPOVERPICKROLLROTSWAPTUCKCATSUBSTRLEFTRIGHTINVERTANDORXOREQUALINCDECSIGNNEGATEABSNOTNZADDSUBMULDIVMODSHLSHRBOOLANDBOOLORNUMEQUALNUMNOTEQUALLTGTLTEGTEMINMAXWITHINSHA1SHA256HASH160HASH256CHECKSIGVERIFYCHECKMULTISIGPACKUNPACKNEWARRAY0NEWARRAYNEWARRAYTNEWSTRUCT0NEWSTRUCTNEWMAPSIZEHASKEYKEYSVALUESPICKITEMAPPENDSETITEMREVERSEITEMSREMOVECLEARITEMSISTYPETHROWTHROWIFNOT"
var _Opcode_map = map[Opcode]string{
0: _Opcode_name[0:8],
@ -262,21 +264,23 @@ var _Opcode_map = map[Opcode]string{
193: _Opcode_name[621:627],
194: _Opcode_name[627:636],
195: _Opcode_name[636:644],
197: _Opcode_name[644:654],
198: _Opcode_name[654:663],
200: _Opcode_name[663:669],
202: _Opcode_name[669:673],
203: _Opcode_name[673:679],
204: _Opcode_name[679:683],
205: _Opcode_name[683:689],
206: _Opcode_name[689:697],
207: _Opcode_name[697:703],
208: _Opcode_name[703:710],
209: _Opcode_name[710:722],
210: _Opcode_name[722:728],
211: _Opcode_name[728:738],
240: _Opcode_name[738:743],
241: _Opcode_name[743:753],
196: _Opcode_name[644:653],
197: _Opcode_name[653:663],
198: _Opcode_name[663:672],
200: _Opcode_name[672:678],
202: _Opcode_name[678:682],
203: _Opcode_name[682:688],
204: _Opcode_name[688:692],
205: _Opcode_name[692:698],
206: _Opcode_name[698:706],
207: _Opcode_name[706:712],
208: _Opcode_name[712:719],
209: _Opcode_name[719:731],
210: _Opcode_name[731:737],
211: _Opcode_name[737:747],
217: _Opcode_name[747:753],
240: _Opcode_name[753:758],
241: _Opcode_name[758:768],
}
func (i Opcode) String() string {