`
simpleman7210
  • 浏览: 18115 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

实现getstatic和putstatic

阅读更多
继上次实现了静态方法调用之后,又实现了对静态字段的读写,即getstatic和putstatic指令。通过了下面一段java代码的测试。
public class ClassHasStaticField
{
private static boolean _z;
private static byte _b;
private static char _c;
private static short _si;
private static int _i;
private static float _f;
private static long _l;
private static double _d;
public static void main()
{
_z = true;
boolean z = _z;
if (z != _z) return;
_b = 100;
byte b = _b;
if (b != _b) return;
_si = 300;
short si = _si;
if (si != _si) return;
_c = 'a';
char c =  _c;
if (c != _c) return;
_i = 200;
int i = _i;
if (i != _i) return;
_f = 34.12f;
float f = _f;
if (f != _f) return;
_d = 21.123456;
double d = _d;
if (d != _d) return;
_l = 123456789;
long l = _l;
if (l != _l) return;
}

}

测试时,仍然是先编译这个java类,然后编译和运行虚拟机,源代码请参考附件。
分享到:
评论

相关推荐

    java相关的2024面试题集锦

    - 遇到new、getstatic、putstatic或invokestatic这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。生成这4条指令的最常见的Java代码场景是:使用new关键字实例化对象的时候、读取或者设置一个类...

    分析Java类加载全过程

     1、遇到new,getstatic,putstatic,invokestatic这4条字节码指令时,加入类还没进行初始化,则马上对其进行初始化工作。其实是3种情况:用new实例化一个类时、读取或者设置类的静态字段时(不包括

    Android Studio 和 Unity 交互并传递参数

    设置先启动原生安卓启动器界面,这样安装后,点击切换到unity,启动器配合设置参数,unity程序通过GetStatic获取原生程序的启动参数,原生app则通过putExtra方法添加所需参数。具体可以翻看一下我的CSDN博客,第一个...

    JVM指令集(1).docx

    jvm常用的指令,是分析字节码反汇编的必备指令 常用的指令 > iconst_0 将int类型常量0压入栈 ...> getstatic 从类中获取静态字段 > iload_2 从局部变量2中装载int类型值 > 调度对象的实便方法:invokevirtual

    PHP new static 和 new self详解

    最近在一个视频的评论被问到一个小问题:这里选择用static 而不是self有特殊的考虑么?... public static function getStatic() { return new static(); } } class Son extends Father {} echo get_class

    Lua解析器mLua.zip

    main()扩展mLua默认只能从文件系统中加载lua代码,但是如果对MLua的setBasedir方法进行重写,以其他的方式实现SourceLoader,则可以加载任意方式的lua代码,包括assets中的,和加密的。 标签:mLua

    12.虚拟机的加载机制1

    1. 加载 2. 验证 【连接】 3. 准备 【连接】 4. 解析 【连接】 5. 初始化 6. 使 7. 卸载 1. 遇到new、getstatic、puts

    PHP的new static和new self的区别与使用

    public static function getStatic() { return new static(); } } class Son extends Father {} echo get_class(Son::getSelf()); // Father echo get_class(Son::getStatic()); // Son echo get_class(Father::...

    asm-inline:Java内联原始ASM指令

    getstatic( System . class, " out " , PrintStream . class) .ldc( " Hello, World! " ) .invokevirtual( PrintStream . class, " println " , MethodType . methodType( Void . TYPE , String . class)); // ...

    speech-to-text:一个向Unity公开语音到文本功能的android插件

    AndroidJavaObject实例{get {return _class.GetStatic(“ instance”); }} void Awake(){ this.gameObjectName = gameObject.name; Setup(); } private void Setup() { // Start plugin `Fragment`. _class...

    JaCoCo探针策略原理及案例总结

    1 探针策略 在一系列字节码指令中插入这些属性呢,只要该属性被执行了,说明其之前的指令都被执行了 注意方法结束了是在 return 指令前放置探针哦 跳转语句的记录 条件语句 2 探针特点 ... 0: getstatic

Global site tag (gtag.js) - Google Analytics