Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ••• [Wormix Test] ActionScript 3 OpCodes List •••
- /-**
- * Copyright 2021 Ruri Gokou (Kuroneko-yousenpai)
- * Email: Kuronekoyousenpai@gmail.com
- * Telegram: https://t.me/Kuroneko_yousenpai
- * VK: https://vk.com/kuroneko_yousenpai
- *-/
- /-*
- =======================Пояснения=======================
- Structure of dictionary:
- Название = Opcode name
- Описание = Simple description what opcode doing
- Использование = Use
- Stack = Как записываются данные в стек после применения опкода
- HEX = Hexadeciminal identificator
- TYPE = Type of data
- D-TYPE = Data type = AbcSpec = ActionScript 3 Byte-code specialization
- Flags = Opcode flags
- Пример = Simple example
- Примечание = Note
- Примечание 1 = Note 1 (additional)
- Обозначения:
- N — Число
- ns — Namespace
- Таблица для числовых типов данных:
- pushbyte от -128 до 127
- pushshort от -32768 до 32767
- pushint от -2147483648 до 2147483647
- *-/
- /-*
- =======================Часто используемые конструкции=======================
- Вызов функций и переменных:
- //Если вызов из другого скрипта СТАТИК паблик функции
- //Обращение к паблик статик функциям
- findpropstrict QName(PackageNamespace("ru.pragmatix.flox.net"),"HttpConnection")
- getproperty QName(PackageNamespace("ru.pragmatix.flox.net"),"HttpConnection")
- callproperty QName(PackageNamespace(""),"CreateThread"), 0
- pop
- //Если просто нужно вызвать паблик функцию
- //Обращение к паблик функциям
- findpropstrict QName(PackageNamespace("-! "),"PromoController")
- constructprop QName(PackageNamespace("-! "),"PromoController"), 0
- callproperty QName(PackageNamespace("","14"),"Test"), 0
- pop
- //Если "private function"
- getlocal_0
- callproperty QName(PrivateNamespace("ru.pragmatix.wormix.game:GameMaster"),"endTurn"), 0
- pop
- //Обращение к паблик статик переменным
- findpropstrict QName(PackageNamespace("ru.pragmatix.wormix.net"),"Server")
- getproperty QName(PackageNamespace("ru.pragmatix.wormix.net"),"Server")
- getproperty QName(PackageNamespace(""),"TESLA")
- //Обращение к паблик переменным
- //Инициализация паблик переменной
- findpropstrict QName(PackageNamespace("ru.pragmatix.wormix.gui.console"),"Console")
- getproperty QName(PackageNamespace("ru.pragmatix.wormix.gui.console"),"Console")
- pushfalse
- initproperty QName(PackageNamespace(""),"Switcher")
- //Вызов паблик переменной
- findpropstrict QName(PackageNamespace("ru.pragmatix.wormix.gui.console"),"Console")
- getproperty QName(PackageNamespace("ru.pragmatix.wormix.gui.console"),"Console")
- getproperty QName(PackageNamespace(""),"Switcher")
- //Вызов приват константы (наглядный пример в скрипте "CheatCodes")
- getlex QName(PrivateNamespace("*","85"),"9$7")
- Инкрементирование/Декрементирование:
- Декрементирование
- getlocal_0
- dup
- setlocal_2
- getproperty QName(PrivateNamespace("ru.pragmatix.wormix.objects.bosses.queenspiders:ScorpionEgg"),">#n")
- decrement_i
- setlocal_3
- getlocal_2
- getlocal_3
- setproperty QName(PrivateNamespace("ru.pragmatix.wormix.objects.bosses.queenspiders:ScorpionEgg"),">#n")
- kill 3
- kill 2
- Инкрементирование
- inclocal_i 3 //Инкрементировать третий регистр
- Равносильно такому:
- getlocal_3
- pushbyte 1
- add
- coerce_i
- setlocal_3
- Инициализация переменной:
- this.Переменная = true:
- getlocal_0
- pushtrue
- initproperty QName(PrivateNamespace("ru.scriptpatch.folder:ScriptName"),"VarName")
- //Если нужно изменить значение переменной, то используется та же конструкция, но с "setproperty"
- Циклы:
- For each
- pushbyte 0
- setlocal 7
- getlocal_3
- callproperty QName(PackageNamespace(""),"getUnits"), 0
- coerce_a
- setlocal 8
- jump setelementsloop
- looplabel:label
- getlocal 8
- getlocal 7
- nextvalue
- coerce QName(PackageNamespace("ru.pragmatix.wormix.objects.unit"),"Unit")
- setlocal 4
- debugline 28
- getlocal 4
- pushtrue
- setproperty QName(PackageNamespace(""),"disposed")
- setelementsloop:debugline 27
- hasnext2 8, 7
- iftrue looplabel
- kill 8
- kill 7
- For
- pushbyte 0
- convert_i
- setlocal_3
- debugline 16
- jump incremented
- looplabel:label
- getlocal_1
- debugline 19
- inclocal_i 3
- debugline 16
- incremented:getlocal_3
- pushbyte 4
- iflt looplabel
- Условие в переменной:
- getlex QName(PackageNamespace("ru.pragmatix.wormix.controller"),",0")
- getproperty QName(PackageNamespace("","2407"),"0#d")
- getproperty QName(PackageNamespace("","2408"),";%b")
- getlocal_0
- getproperty QName(PrivateNamespace("consollite.Api"),"ActiveUnit")
- callproperty QName(PackageNamespace("","2409"),"0!M"), 1
- getproperty QName(PackageNamespace("","52127"),"length")
- pushbyte 1
- ifngt way2
- getlex QName(PackageNamespace("ru.pragmatix.wormix.controller"),",0")
- getproperty QName(PackageNamespace("","1147"),"randomSeed")
- pushbyte 0
- getlex QName(PackageNamespace("ru.pragmatix.wormix.controller"),",0")
- getproperty QName(PackageNamespace("","2407"),"0#d")
- getproperty QName(PackageNamespace("","2408"),";%b")
- getlocal_0
- getproperty QName(PrivateNamespace("consollite.Api"),"ActiveUnit")
- callproperty QName(PackageNamespace("","2409"),"0!M"), 1
- getproperty QName(PackageNamespace("","52127"),"length")
- pushbyte 1
- subtract
- callproperty QName(PackageNamespace("","1148"),"`!S"), 2
- jump deadend
- way2:pushbyte 0
- deadend:
- Switch-case:
- jump switch
- first:label
- returnvalue
- second:label
- returnvalue
- third:label
- returnvalue
- fourth:label
- returnvalue
- fifth:label
- returnvalue
- jump switch
- switch:SWITCH PARAM
- setlocal_2
- getlex QName(PackageNamespace(""),"DEBUG")
- getlocal_2
- ifstrictne secondcase
- pushbyte 0
- jump ending
- secondcase:getlex QName(PackageNamespace(""),"ERROR")
- getlocal_2
- ifstrictne thirdcase
- pushbyte 1
- jump ending
- thirdcase:getlex QName(PackageNamespace(""),"INFO")
- getlocal_2
- ifstrictne foruthcase
- pushbyte 2
- jump ending
- foruthcase:getlex QName(PackageNamespace(""),"COMMAND")
- getlocal_2
- ifstrictne fifthcase
- pushbyte 3
- jump ending
- fifthcase:jump last
- pushbyte 4
- jump last
- last:pushbyte 4
- ending:kill 2
- lookupswitch fifth, 4, first, second, third, fourth, fifth
- jump switch
- first:label
- getlocal_0
- getproperty QName(PrivateNamespace(""),"current")
- pushtrue
- callproperty QName(PackageNamespace(""),"setPressed"), 1
- pop
- getlocal_0
- pushnull
- callpropvoid QName(PrivateNamespace(""),"LegitToggle"), 1
- jump after_action
- second:label
- getlocal_0
- getproperty QName(PrivateNamespace(""),"current")
- pushtrue
- callproperty QName(PackageNamespace(""),"setPressed"), 1
- pop
- getlocal_0
- pushnull
- callpropvoid QName(PrivateNamespace(""),"RageToggle"), 1
- jump after_action
- third:label
- getlocal_0
- getproperty QName(PrivateNamespace(""),"current")
- pushtrue
- callproperty QName(PackageNamespace(""),"setPressed"), 1
- pop
- getlocal_0
- pushnull
- callpropvoid QName(PrivateNamespace(""),"EventsToggle"), 1
- jump after_action
- fourth:label
- getlocal_0
- getproperty QName(PrivateNamespace(""),"current")
- pushtrue
- callproperty QName(PackageNamespace(""),"setPressed"), 1
- pop
- getlocal_0
- pushnull
- callpropvoid QName(PrivateNamespace(""),"MiscToggle"), 1
- jump after_action
- fifth:label
- getlocal_0
- getproperty QName(PrivateNamespace(""),"current")
- pushtrue
- callproperty QName(PackageNamespace(""),"setPressed"), 1
- pop
- getlocal_0
- pushnull
- callpropvoid QName(PrivateNamespace(""),"SettingsToggle"), 1
- jump after_action
- sixth:label
- getlocal_0
- getproperty QName(PrivateNamespace("ru.pragmatix.wormix.gui.window:ActivatePromoKeyDialog"),"legitBtn")
- pushtrue
- callproperty QName(PackageNamespace(""),"setPressed"), 1
- pop
- getlocal_0
- pushnull
- callpropvoid QName(PrivateNamespace(""),"LegitToggle"), 1
- jump after_action
- switch:getlocal_0
- getproperty QName(PrivateNamespace(""),"current")
- setlocal_2
- getlocal_0
- getproperty QName(PrivateNamespace("ru.pragmatix.wormix.gui.window:ActivatePromoKeyDialog"),"legitBtn")
- getlocal_2
- ifstrictne secondcase
- pushbyte 0
- jump ending
- secondcase:getlocal_0
- getproperty QName(PrivateNamespace("ru.pragmatix.wormix.gui.window:ActivatePromoKeyDialog"),"rageBtn")
- getlocal_2
- ifstrictne thirdcase
- pushbyte 1
- jump ending
- thirdcase:getlocal_0
- getproperty QName(PrivateNamespace("ru.pragmatix.wormix.gui.window:ActivatePromoKeyDialog"),"eventsBtn")
- getlocal_2
- ifstrictne foruthcase
- pushbyte 2
- jump ending
- foruthcase:getlocal_0
- getproperty QName(PrivateNamespace("ru.pragmatix.wormix.gui.window:ActivatePromoKeyDialog"),"miscBtn")
- getlocal_2
- ifstrictne fifthcase
- pushbyte 3
- jump ending
- fifthcase:getlocal_0
- getproperty QName(PrivateNamespace("ru.pragmatix.wormix.gui.window:ActivatePromoKeyDialog"),"settingsBtn")
- getlocal_2
- ifstrictne sixthcase
- pushbyte 4
- jump ending
- sixthcase:pushfalse
- iffalse last
- pushbyte 5
- jump ending
- last:pushbyte 5
- ending:kill 2
- lookupswitch sixth, 5, first, second, third, fourth, fifth, sixth
- after_action:
- ===
- Конструкция: _loc22_:Boolean = this.isPreviousPlayerTurn = true;
- getlocal_0
- pushtrue
- dup
- convert_b
- setlocal 30
- initproperty QName(PrivateNamespace(null,"310"),"isPreviousPlayerTurn")
- getlocal 30
- kill 30
- convert_b
- setlocal 22
- Прочие интересные фишки:
- Конструкция:
- dup
- setlocal 5
- Равна конструкции:
- setlocal 5
- getlocal 5
- То есть, если мы приравниваем к _loc5_ несколько значений подряд, то можно сделать так:
- findpropstrict QName(PackageNamespace("2n"),"<$3")
- getlocal_1
- getlocal_1
- getproperty QName(PackageNamespace("","2105"),"x")
- getlocal_1
- getproperty QName(PackageNamespace("","2106"),"y")
- getlocal_2
- pushbyte 20
- pushbyte 30
- pushbyte 24
- constructprop QName(PackageNamespace("2n"),"<$3"), 7
- coerce QName(PackageNamespace("2n"),"<$3")
- dup
- setlocal_3
- pushfalse
- pushfalse
- callpropvoid QName(PackageNamespace("","2107"),"3!T"), 2
- А можно вот так:
- findpropstrict QName(PackageNamespace("2n"),"<$3")
- getlocal_1
- getlocal_1
- getproperty QName(PackageNamespace("","2105"),"x")
- getlocal_1
- getproperty QName(PackageNamespace("","2106"),"y")
- getlocal_2
- pushbyte 20
- pushbyte 30
- pushbyte 24
- constructprop QName(PackageNamespace("2n"),"<$3"), 7
- coerce QName(PackageNamespace("2n"),"<$3")
- setlocal_3
- getlocal_3
- pushfalse
- pushfalse
- callpropvoid QName(PackageNamespace("","2107"),"3!T"), 2
- И результат будет одинаков, только вывод в AS3 слегка изменится
- =========================================================================
- *-/
- /*Типы данных*/
- //Числовые ("Numbers")
- "pushbyte", //Название: PushByte ; Описание: Push byte value on stack ; Использование: pushbyte value:null ; Stack: ... -> ..., byteValue ; HEX: 0x24 ; TYPE: Number ; D-TYPE: UNSIGNED_BYTE ; Примечание: unsigned byte... however, this was writing out too many bytes (4 bytes for the value instead of 1)
- "pushshort", //Название: PushShort ; Описание: Push short value on stack ; Использование: pushshort value:null ; Stack: ... -> ..., shortValue ; HEX: 0x25 ;TYPE: int ; D-TYPE: S32 ;
- "pushint", //Название: PushInt ; Описание: Push integer value on stack ; Использование: pushint value:null ; Stack: ... -> ..., intValue ; HEX: 0x2d ; TYPE: Integer ; D-TYPE: U30 ;
- "pushuint", //Название: PushUInt ; Описание: Push unsigned integer value on stack ; Использование: pushuint value:null ; Stack: ... -> ..., uintValue ; HEX: 0x2E ; TYPE: UnsignedInteger ; D-TYPE: U30 ;
- "pushdouble", //Название: PushDouble ; Описание: Push double precision value on stack ; Использование: pushdouble value:double ; Stack: ... -> ..., doubleValue ; HEX: 0x2f ; TYPE: Number ; D-TYPE: U30 ;
- //Текстовые ("String")
- "pushstring", //Название: PushString ; Описание: Push string value on stack ; Использование: pushstring value:string ; Stack: ... -> ..., stringValue ; HEX: 0x2c ; TYPE: String ; D-TYPE: U30 ;
- //Булевые типы данных ("Boolean")
- "pushtrue", //Название: PushTrue ; Описание: Push true on stack ; Использование: pushtrue ; Stack: ... -> ..., true ; HEX: 0x26 ;
- "pushfalse", //Название: PushFalse ; Описание: Push false on stack ; Использование: pushfalse ; Stack: ... -> ..., false ; HEX: 0x27 ;
- //Специальные ("Special")
- "pushundefined", //Название: PushUndefined ; Описание: Push undefined value on stack ; Использование: ; Stack: ... -> ..., undefined ; HEX: 0x21 ;
- "pushnull", //Название: PushNull ; Описание: Push null value on stack ; Использование: pushnull ; Stack: ... -> ..., null ; HEX: 0x20 ;
- "pushnan", //Название: PushNan ; Описание: Push NaN value on stack ; ; Использование: pushnan ; Stack: ... -> ..., NaN ; Примечание: NaN = Not-a-Number ; HEX: 0x28 ;
- "pushdnan", //Название: PushDNan ; Описание: Push decimal NaN value of on stack ; Использование: ; Stack: Unknown ; Примечание: NaN = Not-a-Number ; HEX: 0x34 ;
- "pushconstant", //Название: PushConstant ; Описание: Push constant value on stack ; Использование: pushconstant value:null ; Stack: ??? ; HEX: 0x22 ;
- /*Для условий перехода на метку "Jumps"*/
- "jump", //Название: Jump ; Описание: Jump to location ; HEX: 0x10 ; TYPE: int ; D-TYPE: S24 ;
- "iftrue", //Название: IfTrue ; Описание: Branch if true ; HEX: 0x11 ; TYPE: int ; D-TYPE: S24 ;
- "iffalse", //Название: IfFalse ; Описание: Branch if false ; HEX: 0x12 ; TYPE: int ; D-TYPE: S24 ;
- "ifeq", //Название: IfEqual ; Описание: Branch if equal ; Использование: ifeq branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x13 ; TYPE: int ; D-TYPE: S24 ;
- "ifne", //Название: IfNotEqual ; Описание: Branch if not equal ; Использование: ifne branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x14 ; TYPE: int ; D-TYPE: S24 ;
- "ifgt", //Название: IfGreaterThan ; Описание: Branch if greater than ; Использование: ifgt branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x17 ; TYPE: int ; D-TYPE: S24 ;
- "ifge", //Название: IfGreaterEqual ; Описание: Branch if greater or equal ; Использование: ifge branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x18 ; TYPE: int ; D-TYPE: S24 ;
- "ifngt", //Название: IfNotGreaterThan ; Описание: Branch if not greater than ; Использование: ifngt branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x0e ; TYPE: int ; D-TYPE: S24 ;
- "ifnge", //Название: IfNotGreaterEqual ; Описание: Branch if not greater or equal ; Использование: ifnge branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x0f ; TYPE: int ; D-TYPE: S24 ;
- "iflt", //Название: IfLowerThan ; Описание: Branch if lower than ; Использование: iflt branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x15 ; TYPE: int ; D-TYPE: S24 ;
- "ifle", //Название: IfLowerEqual ; Описание: Branch if lower or equal ; Использование: ifle branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x16 ; TYPE: int ; D-TYPE: S24 ;
- "ifnlt", //Название: IfNotLowerThan ; Описание: Branch if not lower than ; Использование: ifnlt branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x0c ; TYPE: int ; D-TYPE: S24 ;
- "ifnle", //Название: IfNotLowerEqual ; Описание: Branch if not lower or equal ; Использование: ifnle branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x0d ; TYPE: int ; D-TYPE: S24 ;
- "ifstricteq", //Название: IfStrictEqual ; Описание: Branch if strict equal ; Использование: ifstricteq branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x19 ; TYPE: int ; D-TYPE: S24 ;
- "ifstrictne", //Название: IfStrictNotEqual ; Описание: Branch if not strict equal ; Использование: ifstrictne branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x1a ; TYPE: int ; D-TYPE: S24 ;
- /*Опкоды "calls"*/
- "call", //Название: Call ; Описание: Call function on the stack ; Использование: call argCount:uint ; Stack: ..., function, this, arg1, ..., argN -> ..., value ; HEX: 0x41 ; TYPE: int ; D-TYPE: U30 ;
- "callproperty", //Название: CallProperty ; Описание: Call property ; Использование: callproperty property:multiname, argCount:uint ; Stack: ..., obj, [ns], [name], arg1, ..., argN -> ..., value ; HEX: 0x46 ; TYPE, D-TYPE: BaseMultiname, U30 ; TYPE1, D-TYPE1: int, U30 ;
- "callproplex", //Название: CallPropLex ; Описание: Call property with null as this ; Использование: callproplex property:multiname, argCount:uint ; Stack: ..., aob, [ns], [name], arg1, ..., argN -> ..., value ; HEX: 0x4C ; TYPE, D-TYPE: BaseMultiname, U30 ; TYPE1, D-TYPE1: int, U30 ;
- "callmethod", //Название: CallMethod ; Описание: Call method of object by dispath id ; Использование: callmethod method:uint, argCount:uint ; Stack: ..., this, arg1, ..., argN -> ..., value ; HEX: 0x43 ; TYPE, D-TYPE: int, U30 ; TYPE1, D-TYPE1: int, U30 ;
- "callpropvoid", //Название: CallPropVoid ; Описание: Call property, discard return value ; Использование: callpropvoid property:multiname, argCount:uint ; Stack: ..., obj, [ns], [name], arg1, ..., argN -> ... ; HEX: 0x4f ; TYPE: BaseMultiname, U30 ; D-TYPE: int, U30 ;
- "callinterface", //Название: CallInterface ; Описание: Call interface ; Использование: callinterface callpropvoid interface:classIndex ; Stack: ??? ; HEX: 0x4D ; TYPE, D-TYPE: BaseMultiname, U30 ; TYPE1, D-TYPE1: int, U30 ;
- "callsuper", //Название: CallSuper ; Описание: Call method on parent class ; Использование: callsuper methodName:multiname, argCount:uint ; Stack: ..., obj, [ns], [name], arg1, ..., argN -> ..., value ; HEX: 0x45 ; TYPE, D-TYPE: BaseMultiname, U30 ; TYPE1, D-TYPE1: int, U30 ;
- "callsupervoid", //Название: CallSuperVoid ; Описание: Call method on parent class, discard return value ; Использование: callsupervoid methodName:multiname, argCount:uint ; Stack: ..., obj, [ns], [name], arg1, ..., argN -> ... ; HEX: 0x4e ; TYPE, D-TYPE: BaseMultiname, U30 ; TYPE1, D-TYPE1: int, U30 ;
- "callsuperid", //Название: CallSuperId ; Описание: Call super id ; Использование: callsuperid ??? ; Stack: ??? ; HEX: 0x4B ;
- "callstatic", //Название: CallStatic ; Описание: Call method by method id in ABC file ; Использование: callstatic method:methodIndex, argCount:uint ; Stack: ..., this, arg1, ..., argN -> ..., value ; HEX: 0x44 ; TYPE, D-TYPE: int, U30 ; TYPE1, D-TYPE1: int, U30 ;
- /*Опкоды "construct"*/
- "construct", //Название: Construct ; Описание: Call constructor function on the stack ; Использование: constuct argCount:uint ; Stack: ..., function, arg1, ..., argN -> ..., value ; HEX: 0x42 ; TYPE: int ; D-TYPE: U30 ;
- "constructprop", //Название: ConstructProp ; Описание: Construct a property of an object ; Использование: constructprop property:multiname, argCount:uint ; Stack: ..., obj, [ns], [name], arg1, ..., argN -> ..., value ; HEX: 0x4a ; TYPE, D-TYPE: BaseMultiname, U30 ; TYPE1, D-TYPE1: int, U30 ;
- "constructsuper", //Название: ConstructSuper ; Описание: Call parent constructor of an object ; Использование: constructsuper argCount:uint ; Stack: ..., obj, arg1, ..., argN -> ... ; HEX: 0x49 ; TYPE: int ; D-TYPE: U30 ;
- /*Опкоды "create"*/
- "newobject", //Название: NewObject ; Описание: Create new object ; Использование: newobject propertyCount:uint ; Stack: ..., name1, value1, name2, value2, ..., nameN, valueN -> ..., newObject ; HEX: 0x55 ; TYPE: int ; D-TYPE: U30 ;
- "newarray", //Название: NewArray ; Описание: Create new array ; Использование: newarray valueCount:uint ; Stack: ..., value1, value2, ..., valueN -> ..., newArray ; HEX: 0x56 ; TYPE: int ; D-TYPE: U30 ;
- "newfunction", //Название: NewFunction ; Описание: Create new Function object ; Использование: newfunction method:methodIndex ; Stack: ... -> ..., function ; HEX: 0x40 ; TYPE: int ; D-TYPE: U30 ; Примечание: methodInfo
- "newclass", //Название: NewClass ; Описание: Create new class ; Использование: newclass class:classIndex ; Stack: ..., baseType -> ..., newClass ; HEX: 0x58 ; TYPE: ClassInfo ; D-TYPE: U30 ;
- "newcatch", //Название: NewCatch ; Описание: Create new catch scope ; Использование: newcatch exception:exceptionIndex ; Stack: ... -> ..., catchScope ; HEX: 0x5a ; TYPE: ExceptionInfo ; D-TYPE: U30 ;
- "newactivation", //Название: NewActivation ; Описание: Creates new activation object ; Использование: newactivation ; Stack: ... -> ..., newActivation ; HEX: 0x57 ;
- /*Опкоды "return"*/
- "returnvoid", //Название: ReturnVoid ; Описание: Return from a method ; Использование: returnvoid ; Stack: ... -> ... ; HEX: 0x47 ;
- "returnvalue", //Название: ReturnValue ; Описание: Return value from a method ; Использование: returnvalue ; Stack: ..., value -> ... ; HEX: 0x48 ;
- "astype", //Название: AsType ; Описание: Return same value or null if not specified type ; Использование: astype type:multiname ; Stack: ..., value -> ..., value ; HEX: 0x86 ; TYPE: BaseMultiname ; D-TYPE: U30 ;
- "astypelate", //Название: AsTypeLate ; Описание: Return same value or null if not specified type (stack based) ; Использование: astypelate ; Stack: ..., value, type -> ..., value ; HEX: 0x87 ;
- /*Опкоды "next"*/
- "nextname", //Название: NextName ; Описание: Get name of next property ; Использование: nextname ; Stack: ..., obj, index -> ..., name ; HEX: 0x1e ;
- "nextvalue", //Название: NextValue ; Описание: Get value of next property ; Использование: nextvalue ; Stack: ..., obj, index -> ..., value ; HEX: 0x23 ;
- "hasnext", //Название: HasNext ; Описание: Check if the object has more properties ; Использование: hasnext ; Stack: ..., obj, currentIndex -> ..., nextIndex ; HEX: 0x1F ;
- "hasnext2", //Название: HasNext2 ; Описание: Check if the object has more properties (register based) ; Использование: hasnext2 objectReg:uint, indexReg:uint ; Stack: ... -> ..., boolValue ; HEX: 0x32 ; TYPE, D-TYPE: int, U30 ; TYPE1, D-TYPE1: int, U30 ; Примечание: I'm guessing this is two u30s since they are register positions - the spec was not explicit about this
- /*Опкоды "Get" и "Set"*/
- "setproperty", //Название: SetProperty ; Описание: Set property ; Использование: setproperty property:multiname ; Stack: ..., obj, [ns], [name], value -> ... ; HEX: 0x61 ; TYPE: BaseMultiname ; D-TYPE: U30 ;
- "getproperty", //Название: GetProperty ; Описание: Get property ; Использование: getproperty property:multiname ; Stack: ..., obj, [ns], [name] -> ..., value ; HEX: 0x66 ; TYPE: BaseMultiname ; D-TYPE: U30 ;
- "setlocal", //Название: SetLocal ; Описание: Set local register value ; Использование: setlocal localRegIndex:uint ; Stack: ..., value -> ... ; HEX: 0x63 ; TYPE: int ; D-TYPE: U30 ;
- "getlocal", //Название: GetLocal ; Описание: Get local register value ; Использование: getlocal localRegIndex:uint ; Stack: ... -> ..., value ; HEX: 0x62 ; TYPE: int ; D-TYPE: U30 ;
- "setlocal_0", //Название: Setlocal_0 ; Использование: setlocal_0 ; Stack: ..., value -> ... ; HEX: 0xD4 ;
- "setlocal_1", //Название: Setlocal_1 ; Использование: setlocal_1 ; Stack: ..., value -> ... ; HEX: 0xD5 ;
- "setlocal_2", //Название: Setlocal_2 ; Использование: setlocal_2 ; Stack: ..., value -> ... ; HEX: 0xD6 ;
- "setlocal_3", //Название: Setlocal_3 ; Использование: setlocal_3 ; Stack: ..., value -> ... ; HEX: 0xD7 ;
- "getlocal_0", //Название: GetLocal_0 ; Использование: getlocal_0 ; Stack: ..., value -> ... ; HEX: 0xd0 ;
- "getlocal_1", //Название: GetLocal_1 ; Использование: getlocal_1 ; Stack: ..., value -> ... ; HEX: 0xd1 ;
- "getlocal_2", //Название: GetLocal_2 ; Использование: getlocal_2 ; Stack: ..., value -> ... ; HEX: 0xd2 ;
- "getlocal_3", //Название: GetLocal_3 ; Использование: getlocal_3 ; Stack: ..., value -> ... ; HEX: 0xd3 ;
- "setslot", //Название: SetSlot ; Описание: Set value of a slot ; Использование: setslot slotIndex ; Stack: ..., obj, value -> ... ; HEX: 0x6d ; TYPE: int ; D-TYPE: U30 ; Примечание: U30 — slotId
- "getslot", //Название: GetSlot ; Описание: Get value of a slot ; Использование: getslot slotIndex ; Stack: ..., obj -> ..., value ; HEX: 0x6c ; TYPE: int ; D-TYPE: U30 ;
- "setglobalslot", //Название: SetGlobalSlot ; Описание: Set value of slot on global scope ; Использование: setglobalslot slotIndex ; Stack: ..., value -> ... ; HEX: 0x6F ;
- "setsuper", //Название: SetSuper ; Описание: Set parent class property ; Использование: setsuper parentClassMultiname:multiname ; Stack: ..., obj, [ns], [name], value -> ... ; HEX: 0x05 ; TYPE: BaseMultiname ; D-TYPE: U30 ;
- "getsuper", //Название: GetSuper ; Описание: Get parent class property ; Использование: getsuper parentClassMultiname:multiname ; Stack: ..., obj, [ns], [name] -> ..., value ; HEX: 0x04 ; TYPE: BaseMultiname ; D-TYPE: U30 ;
- //Другое
- "getlex", //Название: GetLex ; Описание: Find and get property ; Использование: getlex property:multiname ; Stack: ... -> ..., obj ; HEX: 0x60 ; TYPE: BaseMultiname ; D-TYPE: U30 ; Примечание: ; Совмещает "findproperty" и "getproperty"
- "getscopeobject", //Название: GetScopeObject ; Описание: Get scope object ; Использование: getscopeobject scopeIndex ; Stack: ... -> ..., obj ; HEX: 0x65 ; TYPE: int ; D-TYPE: U8 ;
- "getouterscope", //Название: GetOuterScope ; Описание: Get scope object on all levels ; Использование: getouterscope allLevelScopeIndex:scopeIndex ; Stack: ... -> ..., obj ; HEX: 0x65 ; TYPE: int ; D-TYPE: U8 ;
- "getglobalscope", //Название: GetGlobalScope ; Описание: Get global scope ; Использование: getglobalscope ; Stack: ... -> ..., obj ; HEX: 0x64 ;
- "getglobalslot", //Название: GetGlobalSlot ; Описание: Get value of slot on global scope ; Использование: getglobalslot slotIndex ; Stack: ... -> ..., value ; HEX: 0x6E ; TYPE: int ; D-TYPE: U30 ;
- "getdescendants", //Название: GetDescendants ; Описание: Get descendants ; Использование: getdescendants operand1:multiname ; Stack: ..., obj, [ns], [name] -> ..., value ; HEX: 0x59 ; TYPE: BaseMultiname ; D-TYPE: U30 ;
- "setpropertylate", //Название: SetPropertyLate ; Описание: Set property (stack based) ; Использование: setpropertylate ??? ; Stack: ??? ; HEX: 0x69 ;
- /*Опкоды "scope"*/
- "pushscope", //Название: PushScope ; Описание: Push object on the scope stack ; Использование: pushscope ; Stack: ..., obj -> ... ; HEX: 0x30 ;
- "pushwith", //Название: PushWith ; Описание: Push with onto scope stack ; Использование: pushwith ; Stack: ..., withScope -> ... ; HEX: 0x1c ;
- "popscope", //Название: PopScope ; Описание: Pop from scope stack and discard value ; Использование: popscope ; Stack: ... -> ... ; HEX: 0x1d ;
- /*Опкоды операций со стеком ("Stack operations opcodes")*/
- "pop", //Название: Pop ; Описание: Pop top value from stack ; Использование: pop ; Stack: ..., value -> ... ; HEX: 0x29 ;
- "dup", //Название: Dup ; Описание: Duplicate value on stack ; Использование: dup ; Stack: ..., value -> ..., value, value ; HEX: 0x2a ;
- "swap", //Название: Swap ; Описание: Swap two values on top of the stack ; Использование: swap ; Stack: ..., value1, value2 -> ..., value2, value1 ; HEX: 0x2b ; Примечание: Alchemy specific opcode
- "throw", //Название: Throw exception ; Описание: Pops value off the stack and throws it ; Использование: throw ; Stack: ..., value -> ..., ; HEX: 0x03 ; Примечание: Alchemy specific opcode
- /*Остальные ("Other")*/
- "nop", //Название: Nop = No operation (No op = nop) ; Описание: Does nothing ; Использование: nop ; Stack: ... -> ... ; HEX: 0x02 ;
- "kill", //Название: Kill ; Описание: Kill local register ; Использование: kill killedRegister:uint ; Stack: ... -> ... ; HEX: 0x08 ; TYPE: int ; D-TYPE: U30 ;
- "label", //Название: Target of a branch ; Описание: Just a mark that this is target of following branch ; Использование: label ; Stack: ... -> ... ; HEX: 0x09 ;
- "typeof", //Название: TypeOf ; Описание: Get name of value type ; Использование: typeof ; Stack: ..., value -> ..., typeName ; HEX: 0x95 ; Примечание: Alchemy specific opcode
- "applytype", //Название: Apply type parameters ; Описание: Apply parameter types to base type. For exmaple when Vector<String> is resolved a runtime. String is parameter, Vector is baseclass ; Использование: applytype typeParamCount:uint ; Stack: ..., baseType, typeParam1, ..., typeParamN -> ..., baseType<typeParam1, ..., typeParamN> ; Stack: baseType, typeParam1, ..., typeParamN ; HEX: 0x53 ; TYPE: int ; D-TYPE: U30 ; Примечание: Vector<String>, "String" is parameter, "Vector" is baseclass Примечание 1: Alchemy specific opcode
- "pushdecimal", //Название: PushDecimal ; Описание: Push decimal value on the stack ; Использование: pushdecimal value:decimal ; Stack: ... -> ..., decimalValue ; HEX: 0x33 ; TYPE: Number ; D-TYPE: U30 ;
- "lookupswitch", //Название: LookUpSwitch ; Описание: Branch based on index ; Использование: lookupswitch defaultTarget:labelName, caseCount:null, case0Target:labelName, case1Target:labelName, ... ; Stack: ..., index -> ... ; HEX: 0x1b ; TYPE, D-TYPE: int, S24 ; TYPE1, D-TYPE1: int, U30 ; TYPE2, D-TYPE2: Array, S24_ARRAY ; Примечание: Нужно для веток "case"! ; Примечание 1: lookupswitch is a special case because it has a variable number of arguments
- "pushnamespace", //Название: PushNamespace ; Описание: Push namespace on the stack ; Использование: pushnamespace value:namespace ; Stack: ... -> ..., namespace ; HEX: 0x31 ; TYPE: LNamespace ; D-TYPE: U30 ;
- /*Математические операции*/
- "add", //Название: Add ; Описание: Add two values ; Использование: add ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xa0 ;
- "subtract", //Название: Subtract ; Описание: Subtract two values ; Использование: subtract ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xa1 ; Примечание: Alchemy specific opcode
- "multiply", //Название: Multiply ; Описание: Multiply two values ; Использование: multiply ; Stack: ..., value1, value2 -> ..., value3 ; HEX:0xa2 ;
- "divide", //Название: Divide ; Описание: Divide two values ; Использование: divide ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xa3 ;
- "modulo", //Название: Modulo ; Описание: Modulo divide two values ; Использование: modulo ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xa4 ;
- //Специальные ("Special")
- "add_i", //Название: Add_i ; Описание: Add two integer values ; Использование: add_i ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xC5 ;
- "add_d", //Название: Add_d ; Описание: Add_d ; Использование: add_d ??? ; Stack: ??? ; HEX: 0x9B ; Flags: Undocumented, not in standart Flash Player ; Примечание: Maybe "d" = "decimal"??? Idk ;
- "add_p", //Название: Add_p ; Описание: Add two values using number context ; Использование: add_p numberContext:uint ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xB5 ; Flags: Not in standart Flash Player, ES4 numerics (ABC minor 17) ;
- "subtract_i", //Название: Subtract ; Описание: Subtact two integer value ; Использование: subtract_i ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xC6 ; Примечание: Alchemy specific opcode
- "subtract_p", //Название: Subtract_i ; Описание: Subtract two values using number context ; Использование: subtract_p numberContext:uint ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xB6 ; Flags: Not in standart Flash Player, ES4 numerics (ABC minor 17)
- "multiply_i", //Название: Multiply_i ; Описание: Multiply two integer values ; Использование: multiply_i ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xC7 ;
- "multiply_p", //Название: Multiply_p ; Описание: Multiply two values using number context ; Использование: multiply_p numberContext:uint ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0x7B ; Flags: Not in standart Flash Player, ES4 numerics (ABC minor 17) ;
- "divide_p", //Название: Divide_p ; Описание: Divide two values using number context ; Использование: divide_p numberContext:uint ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xB8 ; Flags: Not in standart Flash Player, ES4 numerics (ABC minor 17) ;
- "modulo_p", //Название: Modulo_p ; Описание: Modulo divide two values using number context ; Использование: modulo_p numberContext:uint ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xB9 ; Flags: Not in standart Flash Player, ES4 numerics (ABC minor 17) ;
- /*Логические операторы*/
- "not", //Название: Not ; Описание: Boolean negate ; Использование: not ; Stack: ..., value -> ..., !value ; HEX: 0x96 ;
- "negate", //Название: Negate ; Описание: Negate value ; Использование: negate ; Stack: ..., value -> ..., -value ; HEX: 0x90 ;
- /*Опкоды операций смещения ("Shifting opcodes")*/
- "lshift", //Название: LShift ; Описание: Bitwise left shift ; Использование: lshift ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xa5 ;
- "rshift", //Название: RShift ; Описание: Bitwise right shift ; Использование: rshift ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xa6 ;
- "urshift", //Название: URShift ; Описание: Unsigned bitwise right shift ; Использование: urshift ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xa7 ; Примечание: Alchemy specific opcode
- /*Побитовые операторы*/
- "bitnot", //Название: BitNot ; Описание: Bitwise negate ; Использование: bitnot ; Stack: ..., value -> ..., ~value ; HEX:0x97 ;
- "bitand", //Название: BitAnd ; Описание: Bitwise and ; Использование: bitand ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xa8 ;
- "bitor", //Название: BitOr ; Описание: Bitwise or ; Использование: bitor ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xa9 ;
- "bitxor", //Название: BitXor ; Описание: Bitwise xor ; Использование: bitxor ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xAA ;
- //Специальные ("Special")
- "negate_i", //Название: Negate_i ; Описание: Negate integer value ; Использование: negate_i ; Stack: ..., value -> ..., -value ; HEX: 0xC4 ;
- "negate_p", //Название: Negate_p ; Описание: Negate two values using number context ; Использование: negate_p operand1:uint ; Stack: ..., value -> ..., -value ; HEX: 0x8F ; Flags: Not in standart Flash Player, ES4 numerics (ABC minor 17) ;
- /*Опкоды операторов сравнений*/
- "equals", //Название: Equals ; Описание: Compare two values ; Использование: equals ; Stack: ..., value1, value2 -> ..., booleanResult ; HEX: 0xAB ;
- "strictequals", //Название: StrictEquals ; Описание: Strict compare two values ; Использование: strictequals ; Stack: ..., value1, value2 -> ..., booleanResult ; HEX: 0xAC ; Примечание: Alchemy specific opcode
- "greaterthan", //Название: GreaterThan ; Описание: Check that value is greater щк equal than other value ; Использование: greaterthan ; Stack: ..., value1, value2 -> ..., booleanResult ; HEX: 0xAF ;
- "greaterequals", //Название: GreaterEquals ; Описание: Check that value is greater or equal than other value ; Использование: greaterequals ; Stack: ..., value1, value2 -> ..., booleanResult ; HEX: 0xB0 ;
- "lessthan", //Название: LessThan ; Описание: Check that value is less than other value ; Использование: lessthan ; Stack: ..., value1, value2 -> ..., booleanResult ; HEX: 0xAD ;
- "lessequals", //Название: LessEquals ; Описание: Check ерфе value is less or equal than other value ; Использование: lessequals ; Stack: ..., value1, value2 -> ..., booleanResult ; HEX: 0xAE ;
- /*Опкоды операций увеличения и уменьшения*/
- "increment", //Название: Increment ; Описание: Increment value ; Использование: increment ; Stack: ..., value -> ..., incrementedValue ; HEX: 0x91 ;
- "decrement", //Название: Decrement ; Описание: Decrement value ; Использование: decrement ; Stack: ..., value -> ..., decrementedValue ; HEX: 0x93 ;
- "inclocal", //Название: IncLocal ; Описание: Increment local register ; Использование: inclocal localRegister:uint ; Stack: ... -> ... ; HEX: 0x92 ; TYPE: int ; D-TYPE: U30 ;
- "declocal", //Название: Declocal ; Описание: Decrement local register ; Использование: declocal localRegister:uint ; Stack: ... -> ... ; HEX: 0x94 ; TYPE: int ; D-TYPE: U30 ;
- //Специальные ("Special")
- "increment_i", //Название: Increment_i ; Описание: Increment integer value ; Использование: increment_i ; Stack: ..., value -> ..., incrementedValue ; HEX: 0xc0 ;
- "increment_p", //Название: Increment_p ; Описание: Increment value using number context ; Использование: increment_p numberContext:uint ; Stack: ..., value -> ..., incrementedValue ; HEX: 0x9C ; Flags: Not in standart Flash Player, ES4 numerics (ABC minor 17)
- "decrement_i", //Название: Decrement_i ; Описание: Decrement integer value ; Использование: decrement_i ; Stack: ..., value -> ..., decrementedValue ; HEX: 0xc1 ;
- "decrement_p", //Название: Decrement_p ; Описание: Decrement value using number context ; Использование: decrement_p numberContext:uint ; Stack: ..., value -> ..., decrementedValue ; HEX: 0x9E ; Flags: Not in standart Flash Player, ES4 numerics (ABC minor 17)
- "inclocal_i", //Название: IncLocal_i ; Описание: Increment local register integer value ; Использование: inclocal_i localRegister:uint ; Stack: ... -> ... ; HEX: 0xc2 ; TYPE: int ; D-TYPE: U30 ;
- "inclocal_p", //Название: IncLocal_p ; Описание: Increment local register using number context ; Использование: inclocal_p numberContext:uint localRegister:uint ; Stack: ... -> ... ; HEX: 0x9D ; Flags: Not in standart Flash Player, ES4 numerics (ABC minor 17)
- "declocal_i", //Название: DecLocal_i ; Описание: Decrement local register integer value ; Использование: declocal_i localRegister:uint ; Stack: ... -> ... ; HEX: 0xC3 ; TYPE: int ; D-TYPE: U30 ;
- "declocal_p", //Название: DecLocal_p ; Описание: Decrement local register using number context ; Использование: declocal_p numberContext:uint localRegister:uint ; Stack: ... -> ... ; HEX: 0x9F ; Flags: Not in standart Flash Player, ES4 numerics (ABC minor 17)
- /*Опкоды инициализации и удаления свойств*/
- "initproperty", //Название: InitProperty ; Описание: Initialize property ; Использование: initproperty property:multiname ; Stack: ..., obj, [ns], [name], value -> ... ; HEX: 0x68 ; TYPE: BaseMultiname ; D-TYPE: U30 ;
- "deleteproperty", //Название: DeleteProperty ; Описание: Delete property ; Использование: deleteproperty property:multiname ; Stack: ..., obj, [ns], [name] -> ..., boolResult ; HEX: 0x6a ; TYPE: BaseMultiname ; D-TYPE: U30 ;
- "deletepropertylate", //Название: DeletePropertyLate ; Описание: Delete property (stack based) ; Использование: deletepropertylate ; Stack: ??? ; HEX: 0x6B ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
- /*Опкоды "find"*/
- "findproperty", //Название: FindProperty ; Описание: Search property in scope stack, top object when not found ; Использование: findproperty property:multiname ; Stack: ..., [ns], [name] -> ..., obj ; HEX: 0x5e ; TYPE: BaseMultiname ; D-TYPE: U30 ;
- "findpropstrict", //Название: FindPropStrict ; Описание: Search property in scope stack, error when not found ; Использование: findpropstrict property:multiname ; Stack: ..., [ns], [name] -> ..., obj ; HEX: 0x5d ; TYPE: BaseMultiname ; D-TYPE: U30 ;
- "finddef", //Название: FindDef ; Описание: Search script level definition ; Использование: finddef property:multiname ; Stack: ..., [ns], [name] -> ..., obj ; HEX: 0x5F ; TYPE: BaseMultiname ; D-TYPE: U30 ;
- "findpropglobal", //Название: FindPropGlobal ; Описание: Search property in global scope ; Использование: findpropglobal property:multiname ; Stack: ??? ; HEX: 0x5C ; Flags: Not in standart Flash Player ;
- /*Опкоды "convert"*/
- "convert_s", //Название: Convert_s ; Описание: Convert value to string ; Использование: convert_s ; Stack: ..., value -> ..., stringValue ; HEX: 0x70 ;
- "convert_i", //Название: Convert_i ; Описание: Convert value to integer ; Использование: convert_ ; Stack: ..., value -> ..., intValue ; HEX: 0x73 ;
- "convert_u", //Название: Convert_u ; Описание: Convert value to unsigned integer ; Использование: convert_u ; Stack: ..., value -> ..., uintValue ; HEX: 0x74 ;
- "convert_d", //Название: Convert_d ; Описание: Convert value to double ; Использование: convert_d ; Stack: ..., value -> ..., doubleValue ; HEX: 0x75 ;
- "convert_b", //Название: Convert_b ; Описание: Convert value to boolean ; Использование: convert_b ; Stack: ..., value -> ..., booleanValue ; HEX: 0x76 ;
- "convert_o", //Название: Convert_o ; Описание: Convert value to object ; Использование: convert_o ; Stack: ..., value -> ..., value ; HEX: 0x77 ;
- //Специальные ("Special")
- "convert_m", //Название: Convert_m ; Описание: Convert value to decimal ; Использование: convert_m ; Stack: ..., value -> ..., decimalValue ; HEX: 0x79 ; Flags: Not in standart Flash Player, ES4 numerics (ABC minor 17)
- "convert_m_p", //Название: Convert_m_p ; Описание: Convert value to ; Использование: convert_m_p numberContext:uint ; Stack: ..., value -> ..., decimalValue ; HEX: 0x7A ; Flags: Not in standart Flash Player, ES4 numerics (ABC minor 17)
- /*Опкоды "coerce"*/
- "coerce", //Название: Coerce ; Описание: Coerce value to specified type ; Использование: coerce type:multiname ; Stack: ..., value -> ..., coercedValue ; HEX: 0x80 ; TYPE: BaseMultiname ; D-TYPE: U30 ;
- "coerce_b", //Название: Coerce_b ; Описание: Coerce value to boolean ; Использование: coerce_b ; Stack: ..., value -> ..., booleanValue ; HEX: 0x81 ; Flags: Deprecated: Use "convert_b" instead ;
- "coerce_a", //Название: Coerce_a ; Описание: Coerce value to any type ; Использование: coerce_a ; Stack: ..., value -> ..., value ; HEX: 0x82 ;
- "coerce_i", //Название: Coerce_i ; Описание: Coerce value to integer ; Использование: coerce_i ; Stack: ..., value -> ..., intValue ; HEX: 0x83 ; Flags: Deprecated: Use "convert_i" instead ;
- "coerce_d", //Название: Coerce_d ; Описание: Coerce value to double ; Использование: coerce_d ; Stack: ..., value -> ..., doubleValue ; HEX: 0x84 ; Flags: Deprecated: Use "convert_d" instead ;
- "coerce_s", //Название: Coerce_s ; Описание: Coerce value to string ; Использование: coerce_s ; Stack: ..., value -> ..., stringValue ; HEX: 0x85 ;
- "coerce_u", //Название: Coerce_u ; Описание: Coerce value to unsigned integer ; Использование: coerce_u ; Stack: ..., value -> ..., uintValue ; HEX: 0x88 ;
- "coerce_o", //Название: Coerce_o ; Описание: Coerce value to Object ; Использование: coerce_o ; Stack: ..., value -> ..., value ; HEX: 0x89 ;
- /*Опкоды для XML-документов*/
- "dxns", //Название: Dxns ; Описание: Set default XML namespace ; Использование: dxns uriString:string ; Stack: ... -> ... ; HEX: 0x06 ; TYPE: String ; D-TYPE: U30 ;
- "dxnslate", //Название: DxnsLate ; Описание: Set default XML namespace at runtime ; Использование: dxnslate ; Stack: ..., uriValue -> ... ; HEX: 0x07 ;
- //Опкоды "escape"
- "esc_xelem", //Название: Esc_XElem ; Описание: Escape XML element ; Использование: esc_xelem ; Stack: ..., value -> ..., stringValue ; HEX: 0x71 ;
- "esc_xattr", //Название: Esc_XAttr ; Описание: Escape XML attribute ; Использование: esc_xattr ; Stack: ..., value -> ..., stringValue ; HEX: 0x72 ;
- /*Опкоды "check"*/
- "checkfilter", //Название: CheckFilter ; Описание: Check that object can have filter operation applied ; Использование: checkfilter ; Stack: ..., value -> ..., value ; HEX: 0x78 ;
- "instanceof", //Название: InstanceOf ; Описание: Check that type exists in object prototype chain ; Использование: instanceof ; Stack: ..., value, type -> ..., booleanResult ; HEX: 0xB1 ;
- "istype", //Название: IsType ; Описание: Check that object is specified type ; Использование: istype type:multiname ; Stack: ..., value -> ..., booleanResult ; HEX: 0xB2 ; TYPE: BaseMultiname ; D-TYPE: U30 ;
- "istypelate", //Название: IsTypeLate ; Описание: Check that object is of specified type (stack based) ; Использование: istypelate ; Stack: ..., value, type -> ..., booleanResult ; HEX: 0xb3 ;
- "in", //Название: In ; Описание: Check that object has named property ; Использование: in ; Stack: ..., name, obj -> ..., booleanResult ; HEX: 0xb4 ;
- /*Опкоды для операторов с адресацией памяти ("Domain memory operation")*/
- "lf32", //Название: LF32 ; Описание: Load 32bit float value ; Использование: lf32 ; Stack: ..., address -> ..., float32Value ; HEX: 0x38 ; Flags: Domain memory operation ;
- "lf64", //Название: LF64 ; Описание: Load 64bit value ; Использование: lf64 ; Stack: ..., address -> ..., float64Value ; HEX: 0x39 ; Flags: Domain memory operation ;
- "li16", //Название: LI16 ; Описание: Load 16bit integer value ; Использование: li16 ; Stack: ..., address -> ..., int16Value ; HEX: 0x36 ; Flags: Domain memory operation ;
- "li32", //Название: LI32 ; Описание: Load 32bit integer value ; Использование: li32 ; Stack: ..., address -> ..., int32Value ; HEX: 0x37 ; Flags: Domain memory operation ;
- "li8", //Название: LI8 ; Описание: Load 8bit integer value ; Использование: li8 ; Stack: ..., address -> ..., int8Value ; HEX: 0x35 ; Flags: Domain memory operation ;
- "sf32", //Название: SF32 ; Описание: Store 32bit float value ; Использование: sf32 ; Stack: ..., value, address -> ... ; HEX: 0x3D ; Flags: Domain memory operation ;
- "sf64", //Название: SF64 ; Описание: Store 64bit float value ; Использование: sf64 ; Stack: ..., value, address -> ... ; HEX: 0x3E ; Flags: Domain memory operation ;
- "si8", //Название: SI8 ; Описание: Store 8bit integer value ; Использование: si8 ; Stack: ..., value, address -> ... ; HEX: 0x3A ; Flags: Domain memory operation ; Примечание: Alchemy specific opcode
- "si16", //Название: SI16 ; Описание: Store 16bit integer value ; Использование: si16 ; Stack: ..., value, address -> ... ; HEX: 0x3B ; Flags: Domain memory operation ;
- "si32", //Название: SI32 ; Описание: Store 32bit integer value ; Использование: si32 ; Stack: ..., value, address -> ... ; HEX: 0x3C ; Flags: Domain memory operation ;
- "sxi1", //Название: SXI1 ; Описание: Sign extend 1bit value to 32bit ; Использование: sxi1 ; Stack: ..., value -> ... valueExtended ; HEX: 0x50 ; Flags: Domain memory operation ; Примечание: Alchemy specific opcode
- "sxi16", //Название: SXI16 ; Описание: Sign extend 16bit value to 32bit ; Использование: sxi16 ; Stack: ..., value -> ... valueExtended ; HEX: 0x52 ; Flags: Domain memory operation ; Примечание: Alchemy specific opcode
- "sxi8", //Название: SXI8 ; Описание: Sign extend 8bit value to 32bit ; Использование: sxi8 ; Stack: ..., value -> ... valueExtended ; HEX: 0x51 ; Flags: Domain memory operation ; Примечание: Alchemy specific opcode
- /*Опкоды для отладки ("Debug opcodes")*/
- "debug", //Название: Debug ; Описание: Debugging info ; Использование: debug debugType, regName:string, localRegister:uint, extra:null ; Stack: ... -> ... ; HEX: 0xEF ; TYPE, D-TYPE: uint, U8 ; TYPE1, D-TYPE1: int, U30 ; TYPE2, D-TYPE2: uint, U8 ; TYPE3, D-TYPE3: int, U30 ;
- "debugline", //Название: DebugLine ; Описание: Debugging line number info ; Использование: debugline lineNumber:linenum ; Stack: ... -> ... ; HEX: 0xF1 ; TYPE: int ; D-TYPE: U30 ;
- "debugfile", //Название: DebugFile ; Описание: Debugging file info ; Использование: debugfile fileName:string ; Stack: ... -> ... ; HEX: 0xF0 ; TYPE: String ; D-TYPE: U30 ;
- "bkpt", //Название: Breakpoint ; Описание: Breakpoint when debugging ; Использование: bkpt ; Stack: ... -> ... ; HEX: 0x01 ;
- "bkptline", //Название: BreakpointLine ; Описание: Breakpoint on line ; Использование: bkptline lineNumber:linenum ; Stack: ... -> ... ; HEX: 0xF2 ; TYPE: Integer ; D-TYPE: U30
- /*Незадокументированные опкоды ("Undocumented")*/
- "concat", //HEX: 0x9A ; Примечание: Unknown and undocumented opcode, but maybe... Описание: combine one or more values into a single string ; Пример: String.concat(value1, value2, ... , valueN)
- "timestamp", //Название: Timestamp ; Описание: ; Использование: timestamp ; Stack: ... -> ... ; HEX: 0xF3 ; Flags: Undocumented
- "abs_jump", //Название: Abs_Jump ; Описание: Absolute jump ; Использование: abs_jump ??? ; Stack: ??? ; HEX: 0xEE ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
- "verifypass", //Название: VerifyPass ; Описание: Verify pass ; Использование: verifypass ??? ; Stack: ??? ; HEX: 0xF5 ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
- "alloc", //Название: Alloc ; Описание: Alloc ; Использование: alloc ??? ; Stack: ??? ; HEX: 0xF6 ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
- "mark", //Название: Mark ; Описание: Mark ; Использование: mark ??? ; Stack: ??? ; HEX: 0xF7 ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
- "wb", //Название: Wb ; Описание: Wb ; Использование: wb ??? ; Stack: ??? ; HEX: 0xF8 ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
- "prologue", //Название: Prologue ; Описание: Prologue ; Использование: prologue ??? ; Stack: ??? ; HEX: 0xF9 ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
- "sendenter", //Название: SendEnter ; Описание: Send enter ; Использование: sendenter ??? ; Stack: ??? ; HEX: 0xFA ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
- "doubletoatom", //Название: DoubleToAtom ; Описание: Double to atom ; Использование: doubletoatom ??? ; Stack: ??? ; HEX: 0xFB ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
- "sweep", //Название: Sweep ; Описание: Sweep ; Использование: sweep ??? ; Stack: ??? ; HEX: 0xFC ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
- "codegenop", //Название: CodeGenOp ; Описание: CodeGenOp ; Использование: codegenop ??? ; Stack: ??? ; HEX: 0xFD ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
- "verifyop", //Название: VerifyOp ; Описание: VerifyOp ; Использование: verifyop ??? ; Stack: ??? ; HEX: 0xFE ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
- "decode" //Название: Decode ; Описание: Decode ; Использование: decode ??? ; Stack: ??? ; HEX: 0xFF ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
- "findpropglobalstrict", //Название: FindPropGlobalStrict ; Описание: ??? ; Использование: ??? ; Stack: ??? ; HEX: 0x5b ; TYPE: BaseMultiname ; D-TYPE: U30 ; Примечание: Undefined opcode
- /*Неиспользуемые*/
- "OP_0x00",
- "OP_0x0A",
- "OP_0x0B",
- "OP_0x22",
- "OP_0x35",
- "OP_0x36",
- "OP_0x37",
- "OP_0x38",
- "OP_0x39",
- "OP_0x3A",
- "OP_0x3B",
- "OP_0x3C",
- "OP_0x3D",
- "OP_0x3E",
- "OP_0x3F",
- "OP_0x50",
- "OP_0x51",
- "OP_0x52",
- "OP_0x54",
- "OP_0x5B",
- "OP_0x5C",
- "OP_0x67",
- "OP_0x69",
- "OP_0x6B",
- "OP_0x7B",
- "OP_0x7C",
- "OP_0x7D",
- "OP_0x7E",
- "OP_0x7F",
- "OP_0x8A",
- "OP_0x8B",
- "OP_0x8C",
- "OP_0x8D",
- "OP_0x8E",
- "OP_0x98",
- "OP_0x99",
- "OP_0xBA",
- "OP_0xBB",
- "OP_0xBC",
- "OP_0xBD",
- "OP_0xBE",
- "OP_0xBF",
- "OP_0xC8",
- "OP_0xC9",
- "OP_0xCA",
- "OP_0xCB",
- "OP_0xCC",
- "OP_0xCD",
- "OP_0xCE",
- "OP_0xCF",
- "OP_0xD8",
- "OP_0xD9",
- "OP_0xDA",
- "OP_0xDB",
- "OP_0xDC",
- "OP_0xDD",
- "OP_0xDE",
- "OP_0xDF",
- "OP_0xE0",
- "OP_0xE1",
- "OP_0xE2",
- "OP_0xE3",
- "OP_0xE4",
- "OP_0xE5",
- "OP_0xE6",
- "OP_0xE7",
- "OP_0xE8",
- "OP_0xE9",
- "OP_0xEA",
- "OP_0xEB",
- "OP_0xEC",
- "OP_0xED",
- "OP_0xF4",
- "setlocal0",
- "setlocal1",
- "setlocal2",
- "setlocal3",
- "getlocal0",
- "getlocal1",
- "getlocal2",
- "getlocal3",
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement