Advertisement
Kuroneko-yousenpai

AS3 Opcodes Dictionnary

May 12th, 2021 (edited)
3,051
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.                                                       ••• [Wormix Test] ActionScript 3 OpCodes List •••
  2.  
  3. /-**
  4.   * Copyright 2021 Ruri Gokou (Kuroneko-yousenpai)
  5.   * Email: Kuronekoyousenpai@gmail.com
  6.   * Telegram: https://t.me/Kuroneko_yousenpai
  7.   * VK: https://vk.com/kuroneko_yousenpai
  8.   *-/
  9.  
  10. /-*
  11. =======================Пояснения=======================
  12. Structure of dictionary:
  13.  Название = Opcode name
  14.  Описание = Simple description what opcode doing
  15.  Использование = Use
  16.  Stack = Как записываются данные в стек после применения опкода
  17.  HEX = Hexadeciminal identificator
  18.  TYPE = Type of data
  19.  D-TYPE = Data type = AbcSpec = ActionScript 3 Byte-code specialization
  20.  Flags = Opcode flags
  21.  Пример = Simple example
  22.  Примечание = Note
  23.  Примечание 1 = Note 1 (additional)
  24.  
  25. Обозначения:
  26.  N — Число
  27.  ns — Namespace
  28.  
  29. Таблица для числовых типов данных:
  30.  pushbyte от -128 до 127
  31.  pushshort от -32768 до 32767
  32.  pushint от -2147483648 до 2147483647
  33. *-/
  34.  
  35. /-*
  36. =======================Часто используемые конструкции=======================
  37. Вызов функций и переменных:
  38.  
  39. //Если вызов из другого скрипта СТАТИК паблик функции
  40. //Обращение к паблик статик функциям
  41. findpropstrict QName(PackageNamespace("ru.pragmatix.flox.net"),"HttpConnection")
  42. getproperty QName(PackageNamespace("ru.pragmatix.flox.net"),"HttpConnection")
  43. callproperty QName(PackageNamespace(""),"CreateThread"), 0
  44. pop
  45.  
  46. //Если просто нужно вызвать паблик функцию
  47. //Обращение к паблик функциям
  48. findpropstrict QName(PackageNamespace("-! "),"PromoController")
  49. constructprop QName(PackageNamespace("-! "),"PromoController"), 0
  50. callproperty QName(PackageNamespace("","14"),"Test"), 0
  51. pop
  52.  
  53.  
  54. //Если "private function"
  55. getlocal_0
  56. callproperty QName(PrivateNamespace("ru.pragmatix.wormix.game:GameMaster"),"endTurn"), 0
  57. pop
  58.  
  59. //Обращение к паблик статик переменным
  60.  
  61. findpropstrict QName(PackageNamespace("ru.pragmatix.wormix.net"),"Server")
  62. getproperty QName(PackageNamespace("ru.pragmatix.wormix.net"),"Server")
  63. getproperty QName(PackageNamespace(""),"TESLA")
  64.  
  65. //Обращение к паблик переменным
  66. //Инициализация паблик переменной
  67. findpropstrict QName(PackageNamespace("ru.pragmatix.wormix.gui.console"),"Console")
  68. getproperty QName(PackageNamespace("ru.pragmatix.wormix.gui.console"),"Console")
  69. pushfalse
  70. initproperty QName(PackageNamespace(""),"Switcher")
  71.  
  72. //Вызов паблик переменной
  73. findpropstrict QName(PackageNamespace("ru.pragmatix.wormix.gui.console"),"Console")
  74. getproperty QName(PackageNamespace("ru.pragmatix.wormix.gui.console"),"Console")
  75. getproperty QName(PackageNamespace(""),"Switcher")
  76.  
  77. //Вызов приват константы (наглядный пример в скрипте "CheatCodes")
  78.  
  79. getlex QName(PrivateNamespace("*","85"),"9$7")
  80.  
  81. Инкрементирование/Декрементирование:
  82.  
  83. Декрементирование
  84.  
  85. getlocal_0
  86. dup
  87. setlocal_2
  88. getproperty QName(PrivateNamespace("ru.pragmatix.wormix.objects.bosses.queenspiders:ScorpionEgg"),">#n")
  89. decrement_i
  90. setlocal_3
  91. getlocal_2
  92. getlocal_3
  93. setproperty QName(PrivateNamespace("ru.pragmatix.wormix.objects.bosses.queenspiders:ScorpionEgg"),">#n")
  94. kill 3
  95. kill 2
  96.  
  97. Инкрементирование
  98.  
  99. inclocal_i 3 //Инкрементировать третий регистр
  100.  
  101. Равносильно такому:
  102.  
  103. getlocal_3
  104. pushbyte 1
  105. add
  106. coerce_i
  107. setlocal_3
  108.  
  109. Инициализация переменной:
  110.  
  111. this.Переменная = true:
  112.  
  113. getlocal_0
  114. pushtrue
  115. initproperty QName(PrivateNamespace("ru.scriptpatch.folder:ScriptName"),"VarName")
  116.  
  117. //Если нужно изменить значение переменной, то используется та же конструкция, но с "setproperty"
  118.  
  119. Циклы:
  120.  
  121. For each
  122.  
  123. pushbyte 0
  124. setlocal 7
  125. getlocal_3
  126. callproperty QName(PackageNamespace(""),"getUnits"), 0
  127. coerce_a
  128. setlocal 8
  129. jump setelementsloop
  130. looplabel:label
  131. getlocal 8
  132. getlocal 7
  133. nextvalue
  134. coerce QName(PackageNamespace("ru.pragmatix.wormix.objects.unit"),"Unit")
  135. setlocal 4
  136. debugline 28
  137. getlocal 4
  138. pushtrue
  139. setproperty QName(PackageNamespace(""),"disposed")
  140. setelementsloop:debugline 27
  141. hasnext2 8, 7
  142. iftrue looplabel
  143. kill 8
  144. kill 7
  145.  
  146. For
  147.  
  148. pushbyte 0
  149. convert_i
  150. setlocal_3
  151. debugline 16
  152. jump incremented
  153. looplabel:label
  154. getlocal_1
  155. debugline 19
  156.  
  157. inclocal_i 3
  158. debugline 16
  159. incremented:getlocal_3
  160. pushbyte 4
  161. iflt looplabel
  162.  
  163. Условие в переменной:
  164.  
  165. getlex QName(PackageNamespace("ru.pragmatix.wormix.controller"),",0")
  166. getproperty QName(PackageNamespace("","2407"),"0#d")
  167. getproperty QName(PackageNamespace("","2408"),";%b")
  168. getlocal_0
  169. getproperty QName(PrivateNamespace("consollite.Api"),"ActiveUnit")
  170. callproperty QName(PackageNamespace("","2409"),"0!M"), 1
  171. getproperty QName(PackageNamespace("","52127"),"length")
  172. pushbyte 1
  173. ifngt way2
  174. getlex QName(PackageNamespace("ru.pragmatix.wormix.controller"),",0")
  175. getproperty QName(PackageNamespace("","1147"),"randomSeed")
  176. pushbyte 0
  177. getlex QName(PackageNamespace("ru.pragmatix.wormix.controller"),",0")
  178. getproperty QName(PackageNamespace("","2407"),"0#d")
  179. getproperty QName(PackageNamespace("","2408"),";%b")
  180. getlocal_0
  181. getproperty QName(PrivateNamespace("consollite.Api"),"ActiveUnit")
  182. callproperty QName(PackageNamespace("","2409"),"0!M"), 1
  183. getproperty QName(PackageNamespace("","52127"),"length")
  184. pushbyte 1
  185. subtract
  186. callproperty QName(PackageNamespace("","1148"),"`!S"), 2
  187. jump deadend
  188. way2:pushbyte 0
  189. deadend:
  190.  
  191. Switch-case:
  192.  
  193. jump switch
  194. first:label  
  195.  
  196. returnvalue
  197. second:label
  198.  
  199. returnvalue
  200. third:label
  201.  
  202. returnvalue
  203. fourth:label
  204.  
  205. returnvalue
  206. fifth:label
  207.  
  208. returnvalue
  209. jump switch
  210. switch:SWITCH PARAM
  211. setlocal_2
  212. getlex QName(PackageNamespace(""),"DEBUG")
  213. getlocal_2
  214. ifstrictne secondcase
  215. pushbyte 0
  216. jump ending
  217. secondcase:getlex QName(PackageNamespace(""),"ERROR")
  218. getlocal_2
  219. ifstrictne thirdcase
  220. pushbyte 1
  221. jump ending
  222. thirdcase:getlex QName(PackageNamespace(""),"INFO")
  223. getlocal_2
  224. ifstrictne foruthcase
  225. pushbyte 2
  226. jump ending
  227. foruthcase:getlex QName(PackageNamespace(""),"COMMAND")
  228. getlocal_2
  229. ifstrictne fifthcase
  230. pushbyte 3
  231. jump ending
  232. fifthcase:jump last
  233. pushbyte 4
  234. jump last
  235. last:pushbyte 4
  236. ending:kill 2
  237. lookupswitch fifth, 4, first, second, third, fourth, fifth
  238.  
  239.  
  240. jump switch
  241. first:label  
  242. getlocal_0
  243. getproperty QName(PrivateNamespace(""),"current")
  244. pushtrue
  245. callproperty QName(PackageNamespace(""),"setPressed"), 1
  246. pop
  247. getlocal_0
  248. pushnull
  249. callpropvoid QName(PrivateNamespace(""),"LegitToggle"), 1
  250. jump after_action
  251. second:label
  252. getlocal_0
  253. getproperty QName(PrivateNamespace(""),"current")
  254. pushtrue
  255. callproperty QName(PackageNamespace(""),"setPressed"), 1
  256. pop
  257. getlocal_0
  258. pushnull
  259. callpropvoid QName(PrivateNamespace(""),"RageToggle"), 1
  260. jump after_action
  261. third:label
  262. getlocal_0
  263. getproperty QName(PrivateNamespace(""),"current")
  264. pushtrue
  265. callproperty QName(PackageNamespace(""),"setPressed"), 1
  266. pop
  267. getlocal_0
  268. pushnull
  269. callpropvoid QName(PrivateNamespace(""),"EventsToggle"), 1
  270. jump after_action
  271. fourth:label
  272. getlocal_0
  273. getproperty QName(PrivateNamespace(""),"current")
  274. pushtrue
  275. callproperty QName(PackageNamespace(""),"setPressed"), 1
  276. pop
  277. getlocal_0
  278. pushnull
  279. callpropvoid QName(PrivateNamespace(""),"MiscToggle"), 1
  280. jump after_action
  281. fifth:label
  282. getlocal_0
  283. getproperty QName(PrivateNamespace(""),"current")
  284. pushtrue
  285. callproperty QName(PackageNamespace(""),"setPressed"), 1
  286. pop
  287. getlocal_0
  288. pushnull
  289. callpropvoid QName(PrivateNamespace(""),"SettingsToggle"), 1
  290. jump after_action
  291. sixth:label
  292. getlocal_0
  293. getproperty QName(PrivateNamespace("ru.pragmatix.wormix.gui.window:ActivatePromoKeyDialog"),"legitBtn")
  294. pushtrue
  295. callproperty QName(PackageNamespace(""),"setPressed"), 1
  296. pop
  297. getlocal_0
  298. pushnull
  299. callpropvoid QName(PrivateNamespace(""),"LegitToggle"), 1
  300. jump after_action
  301. switch:getlocal_0
  302. getproperty QName(PrivateNamespace(""),"current")
  303. setlocal_2
  304. getlocal_0
  305. getproperty QName(PrivateNamespace("ru.pragmatix.wormix.gui.window:ActivatePromoKeyDialog"),"legitBtn")
  306. getlocal_2
  307. ifstrictne secondcase
  308. pushbyte 0
  309. jump ending
  310. secondcase:getlocal_0
  311. getproperty QName(PrivateNamespace("ru.pragmatix.wormix.gui.window:ActivatePromoKeyDialog"),"rageBtn")
  312. getlocal_2
  313. ifstrictne thirdcase
  314. pushbyte 1
  315. jump ending
  316. thirdcase:getlocal_0
  317. getproperty QName(PrivateNamespace("ru.pragmatix.wormix.gui.window:ActivatePromoKeyDialog"),"eventsBtn")
  318. getlocal_2
  319. ifstrictne foruthcase
  320. pushbyte 2
  321. jump ending
  322. foruthcase:getlocal_0
  323. getproperty QName(PrivateNamespace("ru.pragmatix.wormix.gui.window:ActivatePromoKeyDialog"),"miscBtn")
  324. getlocal_2
  325. ifstrictne fifthcase
  326. pushbyte 3
  327. jump ending
  328. fifthcase:getlocal_0
  329. getproperty QName(PrivateNamespace("ru.pragmatix.wormix.gui.window:ActivatePromoKeyDialog"),"settingsBtn")
  330. getlocal_2
  331. ifstrictne sixthcase
  332. pushbyte 4
  333. jump ending
  334. sixthcase:pushfalse
  335. iffalse last
  336. pushbyte 5
  337. jump ending
  338. last:pushbyte 5
  339. ending:kill 2
  340. lookupswitch sixth, 5, first, second, third, fourth, fifth, sixth
  341. after_action:
  342.  
  343. ===
  344.  
  345. Конструкция: _loc22_:Boolean = this.isPreviousPlayerTurn = true;
  346.  
  347. getlocal_0
  348. pushtrue
  349. dup
  350. convert_b
  351. setlocal 30
  352. initproperty QName(PrivateNamespace(null,"310"),"isPreviousPlayerTurn")
  353. getlocal 30
  354. kill 30
  355. convert_b
  356. setlocal 22
  357.  
  358. Прочие интересные фишки:
  359.  
  360. Конструкция:
  361.  
  362. dup
  363. setlocal 5
  364.  
  365. Равна конструкции:
  366.  
  367. setlocal 5
  368. getlocal 5
  369.  
  370. То есть, если мы приравниваем к _loc5_ несколько значений подряд, то можно сделать так:
  371.  
  372. findpropstrict QName(PackageNamespace("2n"),"<$3")
  373. getlocal_1
  374. getlocal_1
  375. getproperty QName(PackageNamespace("","2105"),"x")
  376. getlocal_1
  377. getproperty QName(PackageNamespace("","2106"),"y")
  378. getlocal_2
  379. pushbyte 20
  380. pushbyte 30
  381. pushbyte 24
  382. constructprop QName(PackageNamespace("2n"),"<$3"), 7
  383. coerce QName(PackageNamespace("2n"),"<$3")
  384. dup
  385. setlocal_3
  386. pushfalse
  387. pushfalse
  388. callpropvoid QName(PackageNamespace("","2107"),"3!T"), 2
  389.  
  390.  
  391. А можно вот так:
  392.  
  393. findpropstrict QName(PackageNamespace("2n"),"<$3")
  394. getlocal_1
  395. getlocal_1
  396. getproperty QName(PackageNamespace("","2105"),"x")
  397. getlocal_1
  398. getproperty QName(PackageNamespace("","2106"),"y")
  399. getlocal_2
  400. pushbyte 20
  401. pushbyte 30
  402. pushbyte 24
  403. constructprop QName(PackageNamespace("2n"),"<$3"), 7
  404. coerce QName(PackageNamespace("2n"),"<$3")
  405. setlocal_3
  406. getlocal_3
  407. pushfalse
  408. pushfalse
  409. callpropvoid QName(PackageNamespace("","2107"),"3!T"), 2
  410.  
  411.  
  412. И результат будет одинаков, только вывод в AS3 слегка изменится
  413.  
  414. =========================================================================
  415. *-/
  416.  
  417.     /*Типы данных*/
  418.  
  419.     //Числовые ("Numbers")
  420.     "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)
  421.     "pushshort", //Название: PushShort ; Описание: Push short value on stack ; Использование: pushshort value:null ; Stack: ... -> ..., shortValue ; HEX: 0x25 ;TYPE: int ; D-TYPE: S32 ;
  422.     "pushint", //Название: PushInt ; Описание: Push integer value on stack ; Использование: pushint value:null ; Stack: ... -> ..., intValue ; HEX: 0x2d ; TYPE: Integer ; D-TYPE: U30 ;
  423.     "pushuint", //Название: PushUInt ; Описание: Push unsigned integer value on stack ; Использование: pushuint value:null ; Stack: ... -> ..., uintValue ; HEX: 0x2E ; TYPE: UnsignedInteger ; D-TYPE: U30 ;
  424.     "pushdouble", //Название: PushDouble ; Описание: Push double precision value on stack ; Использование: pushdouble value:double ; Stack: ... -> ..., doubleValue ; HEX: 0x2f ; TYPE: Number ; D-TYPE: U30 ;
  425.  
  426.     //Текстовые ("String")
  427.     "pushstring", //Название: PushString ; Описание: Push string value on stack ; Использование: pushstring value:string ; Stack: ... -> ..., stringValue ; HEX: 0x2c ; TYPE: String ; D-TYPE: U30 ;
  428.  
  429.     //Булевые типы данных ("Boolean")
  430.     "pushtrue", //Название: PushTrue ; Описание: Push true on stack ; Использование: pushtrue ; Stack: ... -> ..., true ; HEX: 0x26 ;
  431.     "pushfalse", //Название: PushFalse ; Описание: Push false on stack ; Использование: pushfalse ; Stack: ... -> ..., false ; HEX: 0x27 ;
  432.  
  433.     //Специальные ("Special")
  434.     "pushundefined", //Название: PushUndefined ; Описание: Push undefined value on stack ; Использование:  ; Stack: ... -> ..., undefined ; HEX: 0x21 ;
  435.     "pushnull", //Название: PushNull ; Описание: Push null value on stack ; Использование: pushnull ; Stack: ... -> ..., null ; HEX: 0x20 ;
  436.     "pushnan", //Название: PushNan ; Описание: Push NaN value on stack ; ; Использование: pushnan ; Stack: ... -> ..., NaN ; Примечание: NaN = Not-a-Number ; HEX: 0x28 ;
  437.     "pushdnan", //Название: PushDNan ; Описание: Push decimal NaN value of on stack ; Использование:  ; Stack: Unknown ; Примечание: NaN = Not-a-Number ; HEX: 0x34 ;
  438.     "pushconstant", //Название: PushConstant ; Описание: Push constant value on stack ; Использование: pushconstant value:null ; Stack: ??? ; HEX: 0x22 ;
  439.  
  440.     /*Для условий перехода на метку "Jumps"*/
  441.    
  442.     "jump", //Название: Jump ; Описание: Jump to location ; HEX: 0x10 ; TYPE: int ; D-TYPE: S24 ;
  443.     "iftrue", //Название: IfTrue ; Описание: Branch if true ; HEX: 0x11 ; TYPE: int ; D-TYPE: S24 ;
  444.     "iffalse", //Название: IfFalse ; Описание: Branch if false ; HEX: 0x12 ; TYPE: int ; D-TYPE: S24 ;
  445.     "ifeq", //Название: IfEqual ; Описание: Branch if equal ; Использование: ifeq branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x13 ; TYPE: int ; D-TYPE: S24 ;
  446.     "ifne", //Название: IfNotEqual ; Описание: Branch if not equal ; Использование: ifne branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x14 ; TYPE: int ; D-TYPE: S24 ;
  447.     "ifgt", //Название: IfGreaterThan ; Описание: Branch if greater than ; Использование: ifgt branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x17 ; TYPE: int ; D-TYPE: S24 ;
  448.     "ifge", //Название: IfGreaterEqual ; Описание: Branch if greater or equal ; Использование: ifge branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x18 ; TYPE: int ; D-TYPE: S24 ;
  449.     "ifngt", //Название: IfNotGreaterThan ; Описание: Branch if not greater than ; Использование: ifngt branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x0e ; TYPE: int ; D-TYPE: S24 ;
  450.     "ifnge", //Название: IfNotGreaterEqual ; Описание: Branch if not greater or equal ; Использование: ifnge branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x0f ; TYPE: int ; D-TYPE: S24 ;
  451.     "iflt", //Название: IfLowerThan ; Описание: Branch if lower than ; Использование: iflt branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x15 ; TYPE: int ; D-TYPE: S24 ;
  452.     "ifle", //Название: IfLowerEqual ; Описание: Branch if lower or equal ; Использование: ifle branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x16 ; TYPE: int ; D-TYPE: S24 ;
  453.     "ifnlt", //Название: IfNotLowerThan ; Описание: Branch if not lower than ; Использование: ifnlt branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x0c ; TYPE: int ; D-TYPE: S24 ;
  454.     "ifnle", //Название: IfNotLowerEqual ; Описание: Branch if not lower or equal ; Использование: ifnle branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x0d ; TYPE: int ; D-TYPE: S24 ;
  455.     "ifstricteq", //Название: IfStrictEqual ; Описание: Branch if strict equal ; Использование: ifstricteq branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x19 ; TYPE: int ; D-TYPE: S24 ;
  456.     "ifstrictne", //Название: IfStrictNotEqual ; Описание: Branch if not strict equal ; Использование: ifstrictne branchTarget:labelName ; Stack: ..., value1, value2 -> ... ; HEX: 0x1a ; TYPE: int ; D-TYPE: S24 ;
  457.  
  458.     /*Опкоды "calls"*/
  459.    
  460.     "call", //Название: Call ; Описание: Call function on the stack ; Использование: call argCount:uint ; Stack: ..., function, this, arg1, ..., argN -> ..., value ; HEX: 0x41 ; TYPE: int ; D-TYPE: U30 ;
  461.     "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 ;
  462.     "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 ;
  463.     "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 ;
  464.     "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 ;
  465.     "callinterface", //Название: CallInterface ; Описание: Call interface ; Использование: callinterface callpropvoid interface:classIndex ; Stack: ??? ; HEX: 0x4D ; TYPE, D-TYPE: BaseMultiname, U30 ; TYPE1, D-TYPE1: int, U30 ;
  466.     "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 ;
  467.     "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 ;
  468.     "callsuperid", //Название: CallSuperId ; Описание: Call super id ; Использование: callsuperid ??? ; Stack: ??? ; HEX: 0x4B ;
  469.     "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 ;
  470.  
  471.     /*Опкоды "construct"*/
  472.    
  473.     "construct", //Название: Construct ; Описание: Call constructor function on the stack ; Использование: constuct argCount:uint ; Stack: ..., function, arg1, ..., argN -> ..., value ; HEX: 0x42 ; TYPE: int ; D-TYPE: U30 ;
  474.     "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 ;
  475.     "constructsuper", //Название: ConstructSuper ; Описание: Call parent constructor of an object ; Использование: constructsuper argCount:uint ; Stack: ..., obj, arg1, ..., argN -> ... ; HEX: 0x49 ; TYPE: int ; D-TYPE: U30 ;
  476.  
  477.     /*Опкоды "create"*/
  478.    
  479.     "newobject", //Название: NewObject ; Описание: Create new object ; Использование: newobject propertyCount:uint ; Stack: ..., name1, value1, name2, value2, ..., nameN, valueN -> ..., newObject ; HEX: 0x55 ; TYPE: int ; D-TYPE: U30 ;
  480.     "newarray", //Название: NewArray ; Описание: Create new array ; Использование: newarray valueCount:uint ; Stack: ..., value1, value2, ..., valueN -> ..., newArray ; HEX: 0x56 ; TYPE: int ; D-TYPE: U30 ;
  481.     "newfunction", //Название: NewFunction ; Описание: Create new Function object ; Использование: newfunction method:methodIndex ; Stack: ... -> ..., function ; HEX: 0x40 ; TYPE: int ; D-TYPE: U30 ; Примечание: methodInfo
  482.     "newclass", //Название: NewClass ; Описание: Create new class ; Использование: newclass class:classIndex ; Stack: ..., baseType -> ..., newClass ; HEX: 0x58 ; TYPE: ClassInfo ; D-TYPE: U30 ;
  483.     "newcatch", //Название: NewCatch ; Описание: Create new catch scope ; Использование: newcatch exception:exceptionIndex ; Stack: ... -> ..., catchScope ; HEX: 0x5a ; TYPE: ExceptionInfo ; D-TYPE: U30 ;
  484.     "newactivation", //Название: NewActivation ; Описание: Creates new activation object ; Использование: newactivation ; Stack: ... -> ..., newActivation ; HEX: 0x57 ;
  485.  
  486.     /*Опкоды "return"*/
  487.    
  488.     "returnvoid", //Название: ReturnVoid ; Описание: Return from a method ; Использование: returnvoid ; Stack: ... -> ... ; HEX: 0x47 ;
  489.     "returnvalue", //Название: ReturnValue ; Описание: Return value from a method ; Использование: returnvalue ; Stack: ..., value -> ... ; HEX: 0x48 ;
  490.     "astype", //Название: AsType ; Описание: Return same value or null if not specified type ; Использование: astype type:multiname ; Stack: ..., value -> ..., value ; HEX: 0x86 ; TYPE: BaseMultiname ; D-TYPE: U30 ;
  491.     "astypelate", //Название: AsTypeLate ; Описание: Return same value or null if not specified type (stack based) ; Использование: astypelate ; Stack: ..., value, type -> ..., value ; HEX: 0x87 ;
  492.  
  493.     /*Опкоды "next"*/
  494.    
  495.     "nextname", //Название: NextName ; Описание: Get name of next property ; Использование: nextname ; Stack: ..., obj, index -> ..., name ; HEX: 0x1e ;
  496.     "nextvalue", //Название: NextValue ; Описание: Get value of next property ; Использование: nextvalue ; Stack: ..., obj, index -> ..., value ; HEX: 0x23 ;
  497.     "hasnext", //Название: HasNext ; Описание: Check if the object has more properties ; Использование: hasnext ; Stack: ..., obj, currentIndex -> ..., nextIndex ; HEX: 0x1F ;
  498.     "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
  499.  
  500.     /*Опкоды "Get" и "Set"*/
  501.    
  502.     "setproperty", //Название: SetProperty ; Описание: Set property ; Использование: setproperty property:multiname ; Stack: ..., obj, [ns], [name], value -> ... ; HEX: 0x61 ; TYPE: BaseMultiname ; D-TYPE: U30 ;
  503.     "getproperty", //Название: GetProperty ; Описание: Get property ; Использование: getproperty property:multiname ; Stack: ..., obj, [ns], [name] -> ..., value ; HEX: 0x66 ; TYPE: BaseMultiname ; D-TYPE: U30 ;
  504.  
  505.     "setlocal", //Название: SetLocal ; Описание: Set local register value ; Использование: setlocal localRegIndex:uint ; Stack: ..., value -> ... ; HEX: 0x63 ; TYPE: int ; D-TYPE: U30 ;
  506.     "getlocal", //Название: GetLocal ; Описание: Get local register value ; Использование: getlocal localRegIndex:uint ; Stack: ... -> ..., value ; HEX: 0x62 ; TYPE: int ; D-TYPE: U30 ;
  507.  
  508.     "setlocal_0", //Название: Setlocal_0 ; Использование: setlocal_0 ; Stack: ..., value -> ... ; HEX: 0xD4 ;
  509.     "setlocal_1", //Название: Setlocal_1 ; Использование: setlocal_1 ; Stack: ..., value -> ... ; HEX: 0xD5 ;
  510.     "setlocal_2", //Название: Setlocal_2 ; Использование: setlocal_2 ; Stack: ..., value -> ... ; HEX: 0xD6 ;
  511.     "setlocal_3", //Название: Setlocal_3 ; Использование: setlocal_3 ; Stack: ..., value -> ... ; HEX: 0xD7 ;
  512.     "getlocal_0", //Название: GetLocal_0 ; Использование: getlocal_0 ; Stack: ..., value -> ... ; HEX: 0xd0 ;
  513.     "getlocal_1", //Название: GetLocal_1 ; Использование: getlocal_1 ; Stack: ..., value -> ... ; HEX: 0xd1 ;
  514.     "getlocal_2", //Название: GetLocal_2 ; Использование: getlocal_2 ; Stack: ..., value -> ... ; HEX: 0xd2 ;
  515.     "getlocal_3", //Название: GetLocal_3 ; Использование: getlocal_3 ; Stack: ..., value -> ... ; HEX: 0xd3 ;
  516.  
  517.     "setslot", //Название: SetSlot ; Описание: Set value of a slot ; Использование: setslot slotIndex ; Stack: ..., obj, value -> ... ; HEX: 0x6d ; TYPE: int ; D-TYPE: U30 ; Примечание: U30 — slotId
  518.     "getslot", //Название: GetSlot ; Описание: Get value of a slot ; Использование: getslot slotIndex ; Stack: ..., obj -> ..., value ; HEX: 0x6c ; TYPE: int ; D-TYPE: U30 ;
  519.     "setglobalslot", //Название: SetGlobalSlot ; Описание: Set value of slot on global scope ; Использование: setglobalslot slotIndex ; Stack: ..., value -> ... ; HEX: 0x6F ;
  520.  
  521.     "setsuper", //Название: SetSuper ; Описание: Set parent class property ; Использование: setsuper parentClassMultiname:multiname ; Stack: ..., obj, [ns], [name], value -> ... ; HEX: 0x05 ; TYPE: BaseMultiname ; D-TYPE: U30 ;
  522.     "getsuper", //Название: GetSuper ; Описание: Get parent class property ; Использование: getsuper parentClassMultiname:multiname ; Stack: ..., obj, [ns], [name] -> ..., value ; HEX: 0x04 ; TYPE: BaseMultiname ; D-TYPE: U30 ;
  523.  
  524.     //Другое
  525.    
  526.     "getlex", //Название: GetLex ; Описание: Find and get property ; Использование: getlex property:multiname ; Stack: ... -> ..., obj ; HEX: 0x60 ; TYPE: BaseMultiname ; D-TYPE: U30 ; Примечание:  ; Совмещает "findproperty" и "getproperty"
  527.     "getscopeobject", //Название: GetScopeObject ; Описание: Get scope object ; Использование: getscopeobject scopeIndex ; Stack: ... -> ..., obj ; HEX: 0x65 ; TYPE: int ; D-TYPE: U8 ;
  528.     "getouterscope", //Название: GetOuterScope ; Описание: Get scope object on all levels ; Использование: getouterscope allLevelScopeIndex:scopeIndex ; Stack: ... -> ..., obj ; HEX: 0x65 ; TYPE: int ; D-TYPE: U8 ;
  529.     "getglobalscope", //Название: GetGlobalScope ; Описание: Get global scope ; Использование: getglobalscope ; Stack: ... -> ..., obj ; HEX: 0x64 ;
  530.     "getglobalslot", //Название: GetGlobalSlot ; Описание: Get value of slot on global scope ; Использование: getglobalslot slotIndex ; Stack: ... -> ..., value ; HEX: 0x6E ; TYPE: int ; D-TYPE: U30 ;
  531.     "getdescendants", //Название: GetDescendants ; Описание: Get descendants ; Использование: getdescendants operand1:multiname ; Stack: ..., obj, [ns], [name] -> ..., value ; HEX: 0x59 ; TYPE: BaseMultiname ; D-TYPE: U30 ;
  532.     "setpropertylate", //Название: SetPropertyLate ; Описание: Set property (stack based) ; Использование: setpropertylate ??? ; Stack: ??? ; HEX: 0x69 ;
  533.  
  534.     /*Опкоды "scope"*/
  535.    
  536.     "pushscope", //Название: PushScope ; Описание: Push object on the scope stack ; Использование: pushscope ; Stack: ..., obj -> ... ; HEX: 0x30 ;
  537.     "pushwith", //Название: PushWith ; Описание: Push with onto scope stack ; Использование: pushwith ; Stack: ..., withScope -> ... ; HEX: 0x1c ;
  538.     "popscope", //Название: PopScope ; Описание: Pop from scope stack and discard value ; Использование: popscope ; Stack: ... -> ... ; HEX: 0x1d ;
  539.  
  540.     /*Опкоды операций со стеком ("Stack operations opcodes")*/
  541.    
  542.     "pop", //Название: Pop ; Описание: Pop top value from stack ; Использование: pop ; Stack: ..., value -> ... ; HEX: 0x29 ;
  543.     "dup", //Название: Dup ; Описание: Duplicate value on stack ; Использование: dup ; Stack: ..., value -> ..., value, value ; HEX: 0x2a ;
  544.     "swap", //Название: Swap ; Описание: Swap two values on top of the stack ; Использование: swap ; Stack: ..., value1, value2 -> ..., value2, value1 ; HEX: 0x2b ; Примечание: Alchemy specific opcode
  545.     "throw", //Название: Throw exception ; Описание: Pops value off the stack and throws it ; Использование: throw ; Stack: ..., value -> ...,  ; HEX: 0x03 ; Примечание: Alchemy specific opcode
  546.  
  547.     /*Остальные ("Other")*/
  548.    
  549.     "nop", //Название: Nop = No operation (No op = nop) ; Описание: Does nothing ; Использование: nop ; Stack: ... -> ... ; HEX: 0x02 ;
  550.     "kill", //Название: Kill ; Описание: Kill local register ; Использование: kill killedRegister:uint ; Stack: ... -> ... ; HEX: 0x08 ; TYPE: int ; D-TYPE: U30 ;
  551.     "label", //Название: Target of a branch ; Описание: Just a mark that this is target of following branch ; Использование: label ; Stack: ... -> ... ; HEX: 0x09 ;
  552.     "typeof", //Название: TypeOf ; Описание: Get name of value type ; Использование: typeof ; Stack: ..., value -> ..., typeName ; HEX: 0x95 ; Примечание: Alchemy specific opcode
  553.     "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
  554.     "pushdecimal", //Название: PushDecimal ; Описание: Push decimal value on the stack ; Использование: pushdecimal value:decimal ; Stack: ... -> ..., decimalValue ; HEX: 0x33 ; TYPE: Number ; D-TYPE: U30 ;
  555.     "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
  556.     "pushnamespace", //Название: PushNamespace ; Описание: Push namespace on the stack ; Использование: pushnamespace value:namespace ; Stack: ... -> ..., namespace ; HEX: 0x31 ; TYPE: LNamespace ; D-TYPE: U30 ;
  557.  
  558.     /*Математические операции*/
  559.    
  560.     "add", //Название: Add ; Описание: Add two values ; Использование: add ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xa0 ;
  561.     "subtract", //Название: Subtract ; Описание: Subtract two values ; Использование: subtract ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xa1 ; Примечание: Alchemy specific opcode
  562.     "multiply", //Название: Multiply ; Описание: Multiply two values ; Использование: multiply ; Stack: ..., value1, value2 -> ..., value3 ; HEX:0xa2  ;
  563.     "divide", //Название: Divide ; Описание: Divide two values ; Использование: divide ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xa3 ;
  564.     "modulo", //Название: Modulo ; Описание: Modulo divide two values ; Использование: modulo ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xa4 ;
  565.  
  566.     //Специальные ("Special")    
  567.     "add_i", //Название: Add_i ; Описание: Add two integer values ; Использование: add_i ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xC5 ;
  568.     "add_d", //Название: Add_d ; Описание: Add_d ; Использование: add_d ??? ; Stack: ??? ; HEX: 0x9B ; Flags: Undocumented, not in standart Flash Player ; Примечание: Maybe "d" = "decimal"??? Idk ;
  569.     "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) ;
  570.  
  571.     "subtract_i", //Название: Subtract ; Описание: Subtact two integer value ; Использование: subtract_i ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xC6 ; Примечание: Alchemy specific opcode
  572.     "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)
  573.  
  574.     "multiply_i", //Название: Multiply_i ; Описание: Multiply two integer values ; Использование: multiply_i ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xC7 ;
  575.     "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) ;
  576.  
  577.     "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) ;
  578.     "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) ;
  579.  
  580.     /*Логические операторы*/
  581.    
  582.     "not", //Название: Not ; Описание: Boolean negate ; Использование: not ; Stack: ..., value -> ..., !value ; HEX: 0x96 ;
  583.     "negate", //Название: Negate ; Описание: Negate value ; Использование: negate ; Stack: ..., value -> ..., -value ; HEX: 0x90 ;
  584.  
  585.     /*Опкоды операций смещения ("Shifting opcodes")*/
  586.    
  587.     "lshift", //Название: LShift ; Описание: Bitwise left shift ; Использование: lshift ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xa5 ;
  588.     "rshift", //Название: RShift ; Описание: Bitwise right shift ; Использование: rshift ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xa6 ;
  589.     "urshift", //Название: URShift ; Описание: Unsigned bitwise right shift ; Использование: urshift ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xa7 ; Примечание: Alchemy specific opcode
  590.  
  591.     /*Побитовые операторы*/
  592.    
  593.     "bitnot", //Название: BitNot ; Описание: Bitwise negate ; Использование: bitnot ; Stack: ..., value -> ..., ~value ; HEX:0x97  ;
  594.     "bitand", //Название: BitAnd ; Описание: Bitwise and ; Использование: bitand ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xa8 ;
  595.     "bitor", //Название: BitOr ; Описание: Bitwise or ; Использование: bitor ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xa9 ;
  596.     "bitxor", //Название: BitXor ; Описание: Bitwise xor ; Использование: bitxor ; Stack: ..., value1, value2 -> ..., value3 ; HEX: 0xAA ;
  597.    
  598.     //Специальные ("Special")
  599.     "negate_i", //Название: Negate_i ; Описание: Negate integer value ; Использование: negate_i ; Stack: ..., value -> ..., -value ; HEX: 0xC4 ;
  600.     "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) ;
  601.    
  602.     /*Опкоды операторов сравнений*/
  603.    
  604.     "equals", //Название: Equals ; Описание: Compare two values ; Использование: equals ; Stack: ..., value1, value2 -> ..., booleanResult ; HEX: 0xAB ;
  605.     "strictequals", //Название: StrictEquals ; Описание: Strict compare two values ; Использование: strictequals ; Stack: ..., value1, value2 -> ..., booleanResult ; HEX: 0xAC ; Примечание: Alchemy specific opcode
  606.  
  607.     "greaterthan", //Название: GreaterThan ; Описание: Check that value is greater щк equal than other value ; Использование: greaterthan ; Stack: ..., value1, value2 -> ..., booleanResult ; HEX: 0xAF ;
  608.     "greaterequals", //Название: GreaterEquals ; Описание: Check that value is greater or equal than other value ; Использование: greaterequals ; Stack: ..., value1, value2 -> ..., booleanResult ; HEX: 0xB0 ;
  609.  
  610.     "lessthan", //Название: LessThan ; Описание: Check that value is less than other value ; Использование: lessthan ; Stack: ..., value1, value2 -> ..., booleanResult ; HEX: 0xAD ;
  611.     "lessequals", //Название: LessEquals ; Описание: Check ерфе value is less or equal than other value ; Использование: lessequals ; Stack: ..., value1, value2 -> ..., booleanResult ; HEX: 0xAE ;
  612.  
  613.     /*Опкоды операций увеличения и уменьшения*/
  614.    
  615.     "increment", //Название: Increment ; Описание: Increment value ; Использование: increment ; Stack: ..., value -> ..., incrementedValue ; HEX: 0x91 ;
  616.     "decrement", //Название: Decrement ; Описание: Decrement value ; Использование: decrement ; Stack: ..., value -> ..., decrementedValue ; HEX: 0x93 ;
  617.  
  618.     "inclocal", //Название: IncLocal ; Описание: Increment local register ; Использование: inclocal localRegister:uint ; Stack: ... -> ... ; HEX: 0x92 ; TYPE: int ; D-TYPE: U30 ;
  619.     "declocal", //Название: Declocal ; Описание: Decrement local register ; Использование: declocal localRegister:uint ; Stack: ... -> ... ; HEX: 0x94 ; TYPE: int ; D-TYPE: U30 ;
  620.  
  621.     //Специальные ("Special")
  622.     "increment_i", //Название: Increment_i ; Описание: Increment integer value ; Использование: increment_i ; Stack: ..., value -> ..., incrementedValue ; HEX: 0xc0 ;
  623.     "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)
  624.  
  625.     "decrement_i", //Название: Decrement_i ; Описание: Decrement integer value ; Использование: decrement_i ; Stack: ..., value -> ..., decrementedValue ; HEX: 0xc1 ;
  626.     "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)
  627.  
  628.     "inclocal_i", //Название: IncLocal_i ; Описание: Increment local register integer value ; Использование: inclocal_i localRegister:uint ; Stack: ... -> ... ; HEX: 0xc2 ; TYPE: int ; D-TYPE: U30 ;
  629.     "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)
  630.  
  631.     "declocal_i", //Название: DecLocal_i ; Описание: Decrement local register integer value ; Использование: declocal_i localRegister:uint ; Stack: ... -> ... ; HEX: 0xC3 ; TYPE: int ; D-TYPE: U30 ;
  632.     "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)
  633.  
  634.     /*Опкоды инициализации и удаления свойств*/
  635.    
  636.     "initproperty", //Название: InitProperty ; Описание: Initialize property ; Использование: initproperty property:multiname ; Stack: ..., obj, [ns], [name], value -> ... ; HEX: 0x68 ; TYPE: BaseMultiname ; D-TYPE: U30 ;
  637.     "deleteproperty", //Название: DeleteProperty ; Описание: Delete property ; Использование: deleteproperty property:multiname ; Stack: ..., obj, [ns], [name] -> ..., boolResult ; HEX: 0x6a ; TYPE: BaseMultiname ; D-TYPE: U30 ;
  638.     "deletepropertylate", //Название: DeletePropertyLate ; Описание: Delete property (stack based) ; Использование: deletepropertylate ; Stack: ??? ; HEX: 0x6B ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
  639.  
  640.     /*Опкоды "find"*/
  641.    
  642.     "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 ;
  643.     "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 ;
  644.     "finddef", //Название: FindDef ; Описание: Search script level definition ; Использование: finddef property:multiname ; Stack: ..., [ns], [name] -> ..., obj ; HEX: 0x5F ; TYPE: BaseMultiname ; D-TYPE: U30 ;
  645.     "findpropglobal", //Название: FindPropGlobal ; Описание: Search property in global scope ; Использование: findpropglobal property:multiname ; Stack: ??? ; HEX: 0x5C ; Flags: Not in standart Flash Player ;
  646.  
  647.     /*Опкоды "convert"*/
  648.    
  649.     "convert_s", //Название: Convert_s ; Описание: Convert value to string ; Использование: convert_s ; Stack: ..., value -> ..., stringValue ; HEX: 0x70 ;
  650.     "convert_i", //Название: Convert_i ; Описание: Convert value to integer ; Использование: convert_ ; Stack: ..., value -> ..., intValue ; HEX: 0x73 ;
  651.     "convert_u", //Название: Convert_u ; Описание: Convert value to unsigned integer ; Использование: convert_u ; Stack: ..., value -> ..., uintValue ; HEX: 0x74 ;
  652.     "convert_d", //Название: Convert_d ; Описание: Convert value to double ; Использование: convert_d ; Stack: ..., value -> ..., doubleValue ; HEX: 0x75 ;
  653.     "convert_b", //Название: Convert_b ; Описание: Convert value to boolean ; Использование: convert_b ; Stack: ..., value -> ..., booleanValue ; HEX: 0x76 ;
  654.     "convert_o", //Название: Convert_o ; Описание: Convert value to object ; Использование: convert_o ; Stack: ..., value -> ..., value ; HEX: 0x77 ;
  655.  
  656.     //Специальные ("Special")
  657.     "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)
  658.     "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)
  659.  
  660.     /*Опкоды "coerce"*/
  661.    
  662.     "coerce", //Название: Coerce ; Описание: Coerce value to specified type ; Использование: coerce type:multiname ; Stack: ..., value -> ..., coercedValue ; HEX: 0x80 ; TYPE: BaseMultiname ; D-TYPE: U30 ;
  663.     "coerce_b", //Название: Coerce_b ; Описание: Coerce value to boolean ; Использование: coerce_b ; Stack: ..., value -> ..., booleanValue ;  HEX: 0x81 ; Flags: Deprecated: Use "convert_b" instead ;
  664.     "coerce_a", //Название: Coerce_a ; Описание: Coerce value to any type ; Использование: coerce_a ; Stack: ..., value -> ..., value ; HEX: 0x82 ;
  665.     "coerce_i", //Название: Coerce_i ; Описание: Coerce value to integer ; Использование: coerce_i ; Stack: ..., value -> ..., intValue ; HEX: 0x83 ; Flags: Deprecated: Use "convert_i" instead ;
  666.     "coerce_d", //Название: Coerce_d ; Описание: Coerce value to double ; Использование: coerce_d ; Stack: ..., value -> ..., doubleValue ; HEX: 0x84 ; Flags: Deprecated: Use "convert_d" instead ;
  667.     "coerce_s", //Название: Coerce_s ; Описание: Coerce value to string ; Использование: coerce_s ; Stack: ..., value -> ..., stringValue ; HEX: 0x85 ;
  668.     "coerce_u", //Название: Coerce_u ; Описание: Coerce value to unsigned integer ; Использование: coerce_u ; Stack: ..., value -> ..., uintValue ; HEX: 0x88 ;
  669.     "coerce_o", //Название: Coerce_o ; Описание: Coerce value to Object ; Использование: coerce_o ; Stack: ..., value -> ..., value ; HEX: 0x89 ;
  670.  
  671.     /*Опкоды для XML-документов*/
  672.    
  673.     "dxns", //Название: Dxns ; Описание: Set default XML namespace ; Использование: dxns uriString:string ; Stack: ... -> ... ; HEX: 0x06 ; TYPE: String ; D-TYPE: U30 ;
  674.     "dxnslate", //Название: DxnsLate ; Описание: Set default XML namespace at runtime ; Использование: dxnslate ; Stack: ..., uriValue -> ... ; HEX: 0x07 ;
  675.  
  676.     //Опкоды "escape"
  677.    
  678.     "esc_xelem", //Название: Esc_XElem ; Описание: Escape XML element ; Использование: esc_xelem ; Stack: ..., value -> ..., stringValue ; HEX: 0x71 ;
  679.     "esc_xattr", //Название: Esc_XAttr ; Описание: Escape XML attribute ; Использование: esc_xattr ; Stack: ..., value -> ..., stringValue ; HEX: 0x72 ;
  680.  
  681.     /*Опкоды "check"*/
  682.    
  683.     "checkfilter", //Название: CheckFilter ; Описание: Check that object can have filter operation applied ; Использование: checkfilter ; Stack: ..., value -> ..., value ; HEX: 0x78 ;
  684.     "instanceof", //Название: InstanceOf ; Описание: Check that type exists in object prototype chain ; Использование: instanceof ; Stack: ..., value, type -> ..., booleanResult ; HEX: 0xB1 ;
  685.     "istype", //Название: IsType ; Описание: Check that object is specified type ; Использование: istype type:multiname ; Stack: ..., value -> ..., booleanResult ; HEX: 0xB2 ; TYPE: BaseMultiname ; D-TYPE: U30 ;
  686.     "istypelate", //Название: IsTypeLate ; Описание: Check that object is of specified type (stack based) ; Использование: istypelate ; Stack: ..., value, type -> ..., booleanResult ; HEX: 0xb3 ;
  687.     "in", //Название: In ; Описание: Check that object has named property ; Использование: in ; Stack: ..., name, obj -> ..., booleanResult ; HEX: 0xb4 ;
  688.  
  689.     /*Опкоды для операторов с адресацией памяти ("Domain memory operation")*/
  690.    
  691.     "lf32", //Название: LF32 ; Описание: Load 32bit float value ; Использование: lf32 ; Stack: ..., address -> ..., float32Value ; HEX: 0x38 ; Flags: Domain memory operation ;
  692.     "lf64", //Название: LF64 ; Описание: Load 64bit value ; Использование: lf64 ; Stack: ..., address -> ..., float64Value ; HEX: 0x39 ; Flags: Domain memory operation ;
  693.     "li16", //Название: LI16 ; Описание: Load 16bit integer value ; Использование: li16 ; Stack: ..., address -> ..., int16Value ; HEX: 0x36 ; Flags: Domain memory operation ;
  694.     "li32", //Название: LI32 ; Описание: Load 32bit integer value ; Использование: li32 ; Stack: ..., address -> ..., int32Value ; HEX: 0x37 ; Flags: Domain memory operation ;
  695.     "li8", //Название: LI8 ; Описание: Load 8bit integer value ; Использование: li8 ; Stack: ..., address -> ..., int8Value ; HEX: 0x35 ; Flags: Domain memory operation ;
  696.     "sf32", //Название: SF32 ; Описание: Store 32bit float value ; Использование: sf32 ; Stack: ..., value, address -> ... ; HEX: 0x3D ; Flags: Domain memory operation ;
  697.     "sf64", //Название: SF64 ; Описание: Store 64bit float value ; Использование: sf64 ; Stack: ..., value, address -> ... ; HEX: 0x3E ; Flags: Domain memory operation ;
  698.     "si8", //Название: SI8 ; Описание: Store 8bit integer value ; Использование: si8 ; Stack: ..., value, address -> ... ; HEX: 0x3A ; Flags: Domain memory operation ; Примечание: Alchemy specific opcode
  699.     "si16", //Название: SI16 ; Описание: Store 16bit integer value ; Использование: si16 ; Stack: ..., value, address -> ... ; HEX: 0x3B ; Flags: Domain memory operation ;
  700.     "si32", //Название: SI32 ; Описание: Store 32bit integer value ; Использование: si32 ; Stack: ..., value, address -> ... ; HEX: 0x3C ; Flags: Domain memory operation ;
  701.     "sxi1", //Название: SXI1 ; Описание: Sign extend 1bit value to 32bit ; Использование: sxi1 ; Stack: ..., value -> ... valueExtended ; HEX: 0x50 ; Flags: Domain memory operation ; Примечание: Alchemy specific opcode
  702.     "sxi16", //Название: SXI16 ; Описание: Sign extend 16bit value to 32bit ; Использование: sxi16 ; Stack: ..., value -> ... valueExtended ; HEX: 0x52 ; Flags: Domain memory operation ; Примечание: Alchemy specific opcode
  703.     "sxi8", //Название: SXI8 ; Описание: Sign extend 8bit value to 32bit ; Использование: sxi8 ; Stack: ..., value -> ... valueExtended ; HEX: 0x51 ; Flags: Domain memory operation ; Примечание: Alchemy specific opcode
  704.  
  705.     /*Опкоды для отладки ("Debug opcodes")*/
  706.    
  707.     "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 ;
  708.     "debugline", //Название: DebugLine ; Описание: Debugging line number info ; Использование: debugline lineNumber:linenum ; Stack: ... -> ... ; HEX: 0xF1 ; TYPE: int ; D-TYPE: U30 ;
  709.     "debugfile", //Название: DebugFile ; Описание: Debugging file info ; Использование: debugfile fileName:string ; Stack: ... -> ... ; HEX: 0xF0 ; TYPE: String ; D-TYPE: U30 ;
  710.     "bkpt", //Название: Breakpoint ; Описание: Breakpoint when debugging ; Использование: bkpt ; Stack: ... -> ... ; HEX: 0x01 ;
  711.     "bkptline", //Название: BreakpointLine ; Описание: Breakpoint on line ; Использование: bkptline lineNumber:linenum ; Stack: ... -> ... ; HEX: 0xF2 ; TYPE: Integer ; D-TYPE: U30
  712.  
  713.     /*Незадокументированные опкоды ("Undocumented")*/
  714.    
  715.     "concat", //HEX: 0x9A ; Примечание: Unknown and undocumented opcode, but maybe... Описание: combine one or more values into a single string ; Пример: String.concat(value1, value2, ... , valueN)
  716.     "timestamp", //Название: Timestamp ; Описание:  ; Использование: timestamp ; Stack: ... -> ... ; HEX: 0xF3 ; Flags: Undocumented
  717.     "abs_jump", //Название: Abs_Jump ; Описание: Absolute jump ; Использование: abs_jump ??? ; Stack: ??? ; HEX: 0xEE ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
  718.     "verifypass", //Название: VerifyPass ; Описание: Verify pass ; Использование: verifypass ??? ; Stack: ??? ; HEX: 0xF5 ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
  719.     "alloc", //Название: Alloc ; Описание: Alloc ; Использование: alloc ??? ; Stack: ??? ; HEX: 0xF6 ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
  720.     "mark", //Название: Mark ; Описание: Mark ; Использование: mark ??? ; Stack: ??? ; HEX: 0xF7 ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
  721.     "wb", //Название: Wb ; Описание: Wb ; Использование: wb ??? ; Stack: ??? ; HEX: 0xF8 ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
  722.     "prologue", //Название: Prologue ; Описание: Prologue ; Использование: prologue ??? ; Stack: ??? ; HEX: 0xF9 ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
  723.     "sendenter", //Название: SendEnter ; Описание: Send enter ; Использование: sendenter ??? ; Stack: ??? ; HEX: 0xFA ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
  724.     "doubletoatom", //Название: DoubleToAtom ; Описание: Double to atom ; Использование: doubletoatom ??? ; Stack: ??? ; HEX: 0xFB ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
  725.     "sweep", //Название: Sweep ; Описание: Sweep ; Использование: sweep ??? ; Stack: ??? ; HEX: 0xFC ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
  726.     "codegenop", //Название: CodeGenOp ; Описание: CodeGenOp ; Использование: codegenop ??? ; Stack: ??? ; HEX: 0xFD ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
  727.     "verifyop", //Название: VerifyOp ; Описание: VerifyOp ; Использование: verifyop ??? ; Stack: ??? ; HEX: 0xFE ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
  728.     "decode" //Название: Decode ; Описание: Decode ; Использование: decode ??? ; Stack: ??? ; HEX: 0xFF ; Flags: Not in standart Flash Player ; Примечание: Unknown and undocumented opcode
  729.     "findpropglobalstrict", //Название: FindPropGlobalStrict ; Описание: ??? ; Использование: ??? ; Stack: ??? ; HEX: 0x5b ; TYPE: BaseMultiname ; D-TYPE: U30 ; Примечание: Undefined opcode
  730.  
  731.     /*Неиспользуемые*/
  732.    
  733.     "OP_0x00",
  734.     "OP_0x0A",
  735.     "OP_0x0B",
  736.     "OP_0x22",
  737.     "OP_0x35",
  738.     "OP_0x36",
  739.     "OP_0x37",
  740.     "OP_0x38",
  741.     "OP_0x39",
  742.     "OP_0x3A",
  743.     "OP_0x3B",
  744.     "OP_0x3C",
  745.     "OP_0x3D",
  746.     "OP_0x3E",
  747.     "OP_0x3F",
  748.     "OP_0x50",
  749.     "OP_0x51",
  750.     "OP_0x52",
  751.     "OP_0x54",
  752.     "OP_0x5B",
  753.     "OP_0x5C",
  754.     "OP_0x67",
  755.     "OP_0x69",
  756.     "OP_0x6B",
  757.     "OP_0x7B",
  758.     "OP_0x7C",
  759.     "OP_0x7D",
  760.     "OP_0x7E",
  761.     "OP_0x7F",
  762.     "OP_0x8A",
  763.     "OP_0x8B",
  764.     "OP_0x8C",
  765.     "OP_0x8D",
  766.     "OP_0x8E",
  767.     "OP_0x98",
  768.     "OP_0x99",
  769.     "OP_0xBA",
  770.     "OP_0xBB",
  771.     "OP_0xBC",
  772.     "OP_0xBD",
  773.     "OP_0xBE",
  774.     "OP_0xBF",
  775.     "OP_0xC8",
  776.     "OP_0xC9",
  777.     "OP_0xCA",
  778.     "OP_0xCB",
  779.     "OP_0xCC",
  780.     "OP_0xCD",
  781.     "OP_0xCE",
  782.     "OP_0xCF",
  783.     "OP_0xD8",
  784.     "OP_0xD9",
  785.     "OP_0xDA",
  786.     "OP_0xDB",
  787.     "OP_0xDC",
  788.     "OP_0xDD",
  789.     "OP_0xDE",
  790.     "OP_0xDF",
  791.     "OP_0xE0",
  792.     "OP_0xE1",
  793.     "OP_0xE2",
  794.     "OP_0xE3",
  795.     "OP_0xE4",
  796.     "OP_0xE5",
  797.     "OP_0xE6",
  798.     "OP_0xE7",
  799.     "OP_0xE8",
  800.     "OP_0xE9",
  801.     "OP_0xEA",
  802.     "OP_0xEB",
  803.     "OP_0xEC",
  804.     "OP_0xED",
  805.     "OP_0xF4",
  806.  
  807.     "setlocal0",
  808.     "setlocal1",
  809.     "setlocal2",
  810.     "setlocal3",
  811.     "getlocal0",
  812.     "getlocal1",
  813.     "getlocal2",
  814.     "getlocal3",
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement