avm2 pcode 学习笔记。高手勿笑
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 学习笔记。高手勿笑相关推荐
- Java 学习笔记 - 数组类型互转
Java 学习笔记 - 数组类型互转 数组类型转换 字符串数组 to (Integer.Long.Double)列表 传统方式 Java8 Stream方式 数组 to 数组 字符串数组 to (in ...
- 如何成为有效学习的高手 学习笔记
<<如何成为有效学习的高手>> 学习笔记 前言 高效学习的定义是找到适合自己的学习方法,在最短的时间里能够集中注意力,以解决生活或工作中的一个任务为目的着手学习. 需要勤加练习 ...
- 从零开始带你成为MySQL实战优化高手学习笔记(一)
重复是有必要的. 很多新入职的小朋友可能和现在的我一样,对数据库的了解仅仅停留在建库建表增删改查这些操作,日常工作也都是用封装好的代码,别说底层原理了,数据库和系统之间是如何工作都不是很懂. 长此以往 ...
- 《Go语言圣经》学习笔记 第八章 Groroutines和Channels
<Go语言圣经>学习笔记 第八章 Groroutines和Channels 目录 Goroutines 实例:并发的Clock服务 实例:并发的Echo服务 Channels 并发的循环 ...
- CSS学习笔记-04 a标签-导航练习
个人练习,各位大神勿笑 .. <!DOCTYPE html> <html lang="en"> <head><meta charset= ...
- 【代码质量】-阿里巴巴java开发手册(代码质量提升神器)学习笔记
前言:<阿里巴巴 Java 开发手册>是阿里巴巴集团技术团队的集体智慧结晶和经验总结,有了这些前人总结的经验,可以帮助我们写出高质量的代码,同时可以减少Bug数量,少踩坑,提高代码的可读性 ...
- 【转】《信号完整性分析》个人学习笔记
http://blog.sina.com.cn/s/blog_70ef2ee90100whl3.html 写在前言:作为一个还在layout门口徘徊的小虾米,贸然记录自己的学习想法是可笑的.但每个人并 ...
- Abp学习笔记---轻松搞懂模块
做.net开发的朋友或多或少都听说过这个框架,自己在差不多一年前也才开始听说,但是!!!之前也没太当回事,一来是工作项目上用不着,二来以为到时候需要用的时候再拿来用就好了. 现在看来却是大错特错!近段 ...
- oracle update单引号,Oracle学习笔记:update的字段中包括单引号
平时update的时候直接更改字段内的值,例如: update table_temp set name = 'Hider' where id = 100; 但更新后的值中包括单引号,则不能按以上方式进 ...
最新文章
- mac电脑Git提交代码到Github提示git-credential-osxkeychain 验证解决方案
- 一次 Java 内存泄漏排查过程,学习学习
- vue项目中的遇错:Invalid Host header
- Java黑皮书课后题第5章:*5.39(金融应用:求销售总额)假设你正在某百货商店开始销售工作。你的工资包括基本工资和提成。基本工资是5000美元。你的目标是一年挣30000美元,编写程序找最小销售额
- yarn 安装 sass
- 技嘉注入usb 3.0工具_技嘉怎么安装win10系统 技嘉安装win10系统步骤【图文介绍】...
- 【数字信号处理】基于Matlab GUI数字均衡器设计【含Matlab源码 904期】
- mysql数据库的基本管理
- 你能把我带走吗?python:走吧
- 小伙创业做奶茶,兢兢业业把奶茶店已经扩张到了10家分店
- 【FPGA】一些基本模块代码
- 亚信科技笔试java
- 基于矩阵分解的协同过滤算法
- 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——实战一:简易计算器
- 期末考试复习笔记(标红表示重要)
- 惠普服务器CPU位置,手把手教你换CPU 看惠普16核产品性能变化
- 独家|GPT-4重要缔造者、OpenAI 首席科学家:人工智能不吃人
- 模电学习6. 常用的三极管放大电路
- muPdf 把 pdf 转换为 png 图片
- Sun 公司的 Java 跟 Android 使用的 Java 库有什么关系?
热门文章
- win7计算机管理禁用,win7提示windows凭据已被您的系统管理员禁用怎么办
- 人工智能基础——贝叶斯分类器例程(c语言实现,完整代码)
- opencv 判断点在多边形内外
- 好玩的智力测试题-精品
- 代码坏的味道13:夸夸其谈未来性(Speculative Generality)
- 判断一个字符数据是否是数字字符
- mysql 1033 Incorrect information in file 错误
- 给你一个小时,怎样有序撬启Web测试?
- 硬盘安装linux镜像文件iso安装,通过ISO文件硬盘安装Ubuntu系统
- (转载)0x0F1AFD76 (libcocos2d.dll) (Plane.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0x00000018 时发生访问冲突。