1  getlocal_0
  2 pushscope          //一般一段methodbody  开头都是这么2个,
  3                            //               pushscope    推一个对象到范围堆栈。        getlocal_0   得到局部寄存器。或者说当前类好点
  4
  5
  6     FindPropertyStrict    <MultiName>(1563) addFrameScript
  7     PushByte    0         //压入0
  8     GetLocal0             //得到当前对象,翻译成this.
  9     GetProperty    <MultiName>(1564) _SafeStr120          //获取属性
 10     PushByte    3
 11     GetLocal0
 12     GetProperty    <MultiName>(1565) _SafeStr121
 13     CallPropertyVoid    <MultiName>(1563) addFrameScript, <PARAMCOUNT>(4)
 14
 15
 16 翻译结果是     addFrameScript(0, this._SafeStr120, 3, this._SafeStr121);
 17 分析执行一段函数是以  FindPropertyStrict    <MultiName>(1563) addFrameScript
 18                                     。。。。。。。。。
 19                                        CallPropertyVoid    <MultiName>(1563) addFrameScript, <PARAMCOUNT>(4)
 20
 21 案例
 22         FindPropertyStrict    <MultiName>(1566) stop
 23        CallPropertyVoid    <MultiName>(1566) stop, <PARAMCOUNT>(0)
 24        //这么一段的话,就可以翻译成stop()                         <MultiName>(1566)代表stop   每个swf应该都不一样,具体看的
 25
 26
 27     GetLocal0
 28     ConstructSuper    <ARGCOUNT>(0)                super()
 29
 30
 31    GetLocal0
 32     PushFalse
 33     InitProperty    <MultiName>(1571) _SafeStr90             // InitProperty   初始化信息
 34    this._SafeStr90 =false
 35
 36
 37
 38
 39
 40
 41     FindProperty    <MultiName>(1572) scrollRect                  //找到属性
 42     FindPropertyStrict    <MultiName>(1573) Rectangle
 43     PushByte    0
 44     Dup         //复制栈的顶值
 45     PushShort    <VALUE>(700)
 46     PushShort    <VALUE>(630)
 47     ConstructProperty    <MultiName>(1573) Rectangle, <PARAMCOUNT>(4)
 48     InitProperty    <MultiName>(1572) scrollRect             //初始化属性              问题这个scrollRect是当前类的父类的。
 49   编译成    scrollRect = new Rectangle(0, 0, 700, 630);
 50
 51
 52                                   dup                pushbyte 10                        var _loc2_:* = 10 + 10;
 53                                                        dup
 54                                                        add
 55                                                       setlocal_2
 56                                                       ---------------------------------------------------------
 57                                                      pushbyte 10                    var _loc2_:int = 10 + 10;
 58                                                      dup
 59                                                      add
 60                                                     convert_i            /./转换成int
 61                                                                               //convert_b  转换成boolean类型       convert_d  转换成双精度  convert_s  转换成字符串      convert_o  转换成对象(Object)  convert_u  转换成unsigned integer
 62
 63                                                     setlocal_2
 64
 65
 66
 67
 68         GetLocal2                     //得到local2
 69         GetLocal3                   //得到local3
 70         IfNotGreaterEqual    @@L__22        //如果local2小于local3 则跳转到L_22
 71         if (_local2 >= _local3)
 72
 73 IfEqual                                                 如果相等跳转                                  即不等于则执行下面的语句   if(a !=b){ 语句 }
 74 IfNotEqual                                           如果不相等跳转                               即等于则执行下面的语句      if(a==b){ 语句 }
 75 IfFalse
 76 IfTrue
 77 IfGreaterEqual
 78 IfNotGreaterEqual
 79 IfGreaterThan
 80 IfNotGreaterThan
 81 IfLessEqual
 82 IfLowerThan
 83 IfNotLowerEqual
 84 IfNotLowerThan
 85
 86 IfStrictEqual                                    如果全等则跳转                                 即不全等则执行语句  if(a !== b){  语句}
 87
 88 IfStrictNotEqual                              如果不全等则跳转                                 即不全等则执行语句  if(a === b){ 语句}
 89
 90
 91
 92         GetLocal0
 93         FindPropertyStrict    <MultiName>(1616) Welcome
 94         ConstructProperty    <MultiName>(1616) Welcome, <PARAMCOUNT>(0)
 95         SetProperty    <MultiName>(1615) _SafeStr74
 96 this._SafeStr74 = new Welcome();
 97
 98          GetLocal0
 99         FindPropertyStrict    <MultiName>(1616) Welcome
100         PushByte    10
101         ConstructProperty    <MultiName>(1616) Welcome, <PARAMCOUNT>(1)
102         SetProperty    <MultiName>(1615) _SafeStr74
103 this._SafeStr74 = new Welcome(10);

转载于:https://www.cnblogs.com/as3dashu/p/4139350.html

avm2 pcode 学习笔记。高手勿笑相关推荐

  1. Java 学习笔记 - 数组类型互转

    Java 学习笔记 - 数组类型互转 数组类型转换 字符串数组 to (Integer.Long.Double)列表 传统方式 Java8 Stream方式 数组 to 数组 字符串数组 to (in ...

  2. 如何成为有效学习的高手 学习笔记

    <<如何成为有效学习的高手>> 学习笔记 前言 高效学习的定义是找到适合自己的学习方法,在最短的时间里能够集中注意力,以解决生活或工作中的一个任务为目的着手学习. 需要勤加练习 ...

  3. 从零开始带你成为MySQL实战优化高手学习笔记(一)

    重复是有必要的. 很多新入职的小朋友可能和现在的我一样,对数据库的了解仅仅停留在建库建表增删改查这些操作,日常工作也都是用封装好的代码,别说底层原理了,数据库和系统之间是如何工作都不是很懂. 长此以往 ...

  4. 《Go语言圣经》学习笔记 第八章 Groroutines和Channels

    <Go语言圣经>学习笔记 第八章 Groroutines和Channels 目录 Goroutines 实例:并发的Clock服务 实例:并发的Echo服务 Channels 并发的循环 ...

  5. CSS学习笔记-04 a标签-导航练习

    个人练习,各位大神勿笑  .. <!DOCTYPE html> <html lang="en"> <head><meta charset= ...

  6. 【代码质量】-阿里巴巴java开发手册(代码质量提升神器)学习笔记

    前言:<阿里巴巴 Java 开发手册>是阿里巴巴集团技术团队的集体智慧结晶和经验总结,有了这些前人总结的经验,可以帮助我们写出高质量的代码,同时可以减少Bug数量,少踩坑,提高代码的可读性 ...

  7. 【转】《信号完整性分析》个人学习笔记

    http://blog.sina.com.cn/s/blog_70ef2ee90100whl3.html 写在前言:作为一个还在layout门口徘徊的小虾米,贸然记录自己的学习想法是可笑的.但每个人并 ...

  8. Abp学习笔记---轻松搞懂模块

    做.net开发的朋友或多或少都听说过这个框架,自己在差不多一年前也才开始听说,但是!!!之前也没太当回事,一来是工作项目上用不着,二来以为到时候需要用的时候再拿来用就好了. 现在看来却是大错特错!近段 ...

  9. oracle update单引号,Oracle学习笔记:update的字段中包括单引号

    平时update的时候直接更改字段内的值,例如: update table_temp set name = 'Hider' where id = 100; 但更新后的值中包括单引号,则不能按以上方式进 ...

最新文章

  1. mac电脑Git提交代码到Github提示git-credential-osxkeychain 验证解决方案
  2. 一次 Java 内存泄漏排查过程,学习学习
  3. vue项目中的遇错:Invalid Host header
  4. Java黑皮书课后题第5章:*5.39(金融应用:求销售总额)假设你正在某百货商店开始销售工作。你的工资包括基本工资和提成。基本工资是5000美元。你的目标是一年挣30000美元,编写程序找最小销售额
  5. yarn 安装 sass
  6. 技嘉注入usb 3.0工具_技嘉怎么安装win10系统 技嘉安装win10系统步骤【图文介绍】...
  7. 【数字信号处理】基于Matlab GUI数字均衡器设计【含Matlab源码 904期】
  8. mysql数据库的基本管理
  9. 你能把我带走吗?python:走吧
  10. 小伙创业做奶茶,兢兢业业把奶茶店已经扩张到了10家分店
  11. 【FPGA】一些基本模块代码
  12. 亚信科技笔试java
  13. 基于矩阵分解的协同过滤算法
  14. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——实战一:简易计算器
  15. 期末考试复习笔记(标红表示重要)
  16. 惠普服务器CPU位置,手把手教你换CPU 看惠普16核产品性能变化
  17. 独家|GPT-4重要缔造者、OpenAI 首席科学家:人工智能不吃人
  18. 模电学习6. 常用的三极管放大电路
  19. muPdf 把 pdf 转换为 png 图片
  20. Sun 公司的 Java 跟 Android 使用的 Java 库有什么关系?

热门文章

  1. win7计算机管理禁用,win7提示windows凭据已被您的系统管理员禁用怎么办
  2. 人工智能基础——贝叶斯分类器例程(c语言实现,完整代码)
  3. opencv 判断点在多边形内外
  4. 好玩的智力测试题-精品
  5. 代码坏的味道13:夸夸其谈未来性(Speculative Generality)
  6. 判断一个字符数据是否是数字字符
  7. mysql 1033 Incorrect information in file 错误
  8. 给你一个小时,怎样有序撬启Web测试?
  9. 硬盘安装linux镜像文件iso安装,通过ISO文件硬盘安装Ubuntu系统
  10. (转载)0x0F1AFD76 (libcocos2d.dll) (Plane.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0x00000018 时发生访问冲突。