asm学习笔记之栈映射帧



    其实正常来说,应该是每个字节码指令都有一个栈状态的,但是为了节省空间,在实际生成的字节码中,只有在进行了跳转时(比如GOTO IFLT等指令时)才保存了栈的状态,其他帧的状态都可以通过它们算出来,而且一个方法的初始帧状态是不保存的,因为初始的状态可以通过方法中的签名算出来.而且为了进一步减少空间,又对栈映射帧进行一些类型的划分,因为有可能两个栈映射帧的状态是一样,或者说有一些类似,接下来我就介绍一下,具体有哪些类型.打开org.objectweb.asm.Opcodes类的源码,我们可以看到如下定义:

    代码

    /**
     * Represents a compressed frame with complete frame data.
     */
    int F_FULL = 0;

    /**
     * Represents a compressed frame where locals are the same as the locals in
     * the previous frame, except that additional 1-3 locals are defined, and
     * with an empty stack.
     */
    int F_APPEND = 1;

    /**
     * Represents a compressed frame where locals are the same as the locals in
     * the previous frame, except that the last 1-3 locals are absent and with
     * an empty stack.
     */
    int F_CHOP = 2;

    /**
     * Represents a compressed frame with exactly the same locals as the
     * previous frame and with an empty stack.
     */
    int F_SAME = 3;

    /**
     * Represents a compressed frame with exactly the same locals as the
     * previous frame and with a single value on the stack.
     */
    int F_SAME1 = 4;
 
它已经对每个状态做出解释了,我这里就不说了,要理解这里的话不难,只要你对java字节码指令执行以及栈结构了解就行

 

【ASM】字节码操作 工具类与常用类 AnalyzerAdapter初步介绍 【ASM】字节码操作 工具类与常用类 LocalVariablesSorter 源码介绍以及原理介绍我们看了LocalVariablesSorter的源码以及相关原理。本章节我们主要来学习AnalyzerAdapter。对于AnalyzerAdapter类来说,它的特点是“可以模拟frame的变化”,或者说“可以模拟local variables和operand stack的变化”。/****/ 阅读详情

相关推荐

FC-AE-ASM协议.pdf

Fibre Channel Avionics Environment -ANONYMOUS SUBSCRIBER MESSAGING Fibre Channel 光纤通道航空电子环境 ASM协议 属于FC-AE协议簇 无签名的匿名消息传输(FC-AE-ASM)完整版协议

一文解读类的加载过程(类的生命周期)

在Java中数据类型分为基本数据类型和引用数据类型。基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载。按照Java虚拟机规范,从class文件到加载到内存中的类,到类卸载出内存为止,它的整个生命周期包括如下7个阶段:其中,验证、准备、解析3个部分统称为链接(Linking)

一个菜鸡的博客 8870

智能车竞赛新手必看:用AD21从零画一块英飞凌TC264核心板(附开源PCB文件)

本文详细介绍了使用Altium Designer 21(AD21)从零开始设计英飞凌TC264核心板的完整流程,涵盖原理图绘制、PCB布线到最终DRC检查的全过程。针对智能车竞赛新手,提供了实用的硬件设计技巧和开源PCB文件,帮助快速掌握TC264核心板开发。

weixin_27017211的博客 246

JVM高级特性与实践(六):Class类文件的结构(访问标志,索引、字段表、方法表、属性表集合)

代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编译发展的一大步。 上篇博文中学习讲解了Class类文件结构的有关知识点,关于数据项方面介绍了常量池,此篇文章将介绍完余下的数据项部分,大致知识点如下: 访问标志、类索引、父类索引与接口索引集合、字段表集合、属性表集合 、各数据项的定义、作用、结构组成及实例讲解

lemonGuo的大脑皮层、小脑、海马体、杏仁核..... 3328

AWR射频仿真基本操作(一)

这里只讲述一个基本的操作: 软件是AWR 14版本

钢丝 2万+

别再只调IoU了!给YOLOv8换上NWDLoss,实测小目标检测精度提升明显

本文深入探讨了YOLOv8在小目标检测中的优化策略,重点介绍了NWDLoss(Normalized Wasserstein Distance Loss)的应用优势。通过对比实验证明,NWDLoss能有效解决传统IoU损失函数的局限性,显著提升小目标检测精度,在遥感影像和交通监控等场景中表现尤为突出。文章提供了详细的代码实现和训练技巧,帮助开发者快速集成这一先进技术。

weixin_29072299的博客 272

ASM初探

对于 ASM 而言,它提供了 两种模型:对象模型和事件模型。 ASM 的对象模型(ASM Tree API) 对象模型的 本质 是一个 被封装过后的事件模型,它 使用了树状图的形式来描述一个类,其中包含多个节点,例如方法节点、字段节点等等,而每个节点又有子节点,例如方法节中有操作码子节点 等等。 在对象模型下的 ASM 有 两类操作纬度,分别如下所示: 1)、获取节点:获取指定类、字段、方法节点。 2)、操控操作码(针对方法节点):获取操作码位置、替换、删除、插入操作码、输出字节码。 1.获取节点 获取一个

一个码农的博客 1201

已过tiktok校招客户端,面经分享

面试的话, 一天面完3面, 效率很高, 三天之后就发了offer 字节邮件里面也说了不能泄露面试题, 那我就把我秋招参与美团,字节,腾讯,阿里面试被问到的全部问题总结着写出来了, 这其实是我每一轮面试完之后我都会总结哪里答对了, 哪里没有答对, 总结了一大堆问题出来. 答案未必正确, 我只是给自己写了个简单的一句话概括, 可能不够完善, 建议看官自行回答一下这些问题 二本非科班, 暑假在字节实习过, 不过不是tiktok部门, 因此秋招就没啥时间准备面试了, 只投了几个大厂, 顺便也在字节跨部门转正,

a1472750149的博客 1308

JVM栈空间的使用和优化

本文系统解析了JVM中的栈结构及其核心组件。首先介绍栈映射帧(StackMapTable)作为字节码验证的关键元数据,通过记录方法基本块状态提升验证效率;其次对比Java虚拟机栈与本地方法栈的功能差异,前者服务Java方法而后者支撑native方法;然后详细剖析栈帧的四大组成:局部变量表存储方法变量,操作数栈处理计算过程,动态链接实现方法调用,返回地址指引执行流程;最后对比栈帧溢出与堆溢出的触发机制与解决方案。全文揭示了JVM栈结构如何协同保障方法执行的合法性与高效性。

JasmineWr的博客 904

【数字孪生与仿真技术】07:焊装生产线虚拟调试与PLC代码生成全流程实战:从数字孪生到智能优化

摘要:本文系统阐述焊装生产线虚拟调试与PLC代码自动化生成的完整技术体系,结合工业4.0背景下的智能制造需求,构建从离散事件仿真、机器人运动规划到PLC控制逻辑生成的全流程解决方案。通过MATLAB/Simulink平台实现焊装线物流仿真优化,采用遗传算法进行缓冲区容量配置,结合Stateflow状态机设计PLC控制逻辑,并利用PLC Coder生成西门子S7-1500兼容的ST代码。某车企焊装线应用案例显示,虚拟调试技术使调试周期缩短75%,OEE提升13.4%,年节约成本超$420万。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1830

eCognition易康操作教程(二):多尺度分割基于多光谱数据构建规则集,结合DSM高程数据提取建筑物、树木和绿地

一、数据 数据来源:教程中的实验数据,共包含RGB三个波段,还有数字地表模型(以下简称DSM)文件。 图一 RGB影像 数据特征:数据范围较小,要素种类少,仅包含较多的建筑和大片的绿地。由于建筑的房顶使用的材料和材料颜色不同,所以建筑的光谱特征没有规律,是不连续的特征。而绿地的光谱特征则十分容易分辨。 但是建筑通常具有规则的形状,而且建筑相比于周围其他要素...

蒹葭苍苍 8303

Byte Buddy官方教程(五) —自定义方法实现

Byte Buddy官方教程 — 自定义方法实现

CaptHua的博客 2677

YOLOv11训练命令完全指南:从核心参数解析到高级调优实战(数据配置、epochs设定、batch-size优化与img-size调整)(二)

本文介绍了YOLOv11训练命令的完整配置与解析,提供了基础训练命令示例及参数详解。示例命令包含数据集配置(coco.yaml)、训练轮次(300)、批次大小(64)、图像尺寸(640)等核心参数,以及优化器(AdamW)、学习率(0.001)等调优选项。通过代码实现展示了训练器的初始化流程,包括参数解析、设备设置、数据加载和模型创建等关键步骤,为YOLOv11模型训练提供了实用指导。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1094

深入探索编译插桩技术(四、ASM 探秘)

在 ASM Bytecode Outline 工具的帮助下,我们能够完成很多场景下的 ASM 插桩的需求,但是,当我们使用其处理字节码的时候还是需要考虑很多种可能出现的情况。如果想要具备这方面的深度思考能力,我们就必须对每一个操作码的特征都有较深的了解,如果还不了解的同学可以去看看《深入探索编译插桩技术(三、JVM字节码)。因此,

2401_84149496的博客 1119

Dify平台隐患url:/console/api/remote-files/upload暴露高危漏洞,配置nginx htpasswd模块认证机制屏蔽解决

内部网络探测: 攻击者可通过SSRF扫描内网服务云元数据访问: 可能访问AWS/Aliyun/腾讯云等元数据服务服务端请求伪造: 以服务器身份发起任意HTTP请求。

CN_Eden 1318

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

java asm 中文文档_Java ASM3学习(3)

MethodVisitorClassVisitor的visitMethod能够访问到类中某个方法的一些入口信息,那么针对具体方法中字节码的访问是由MethodVisitor来进行的访问顺序如下,其中visitCode和visitMaxs仅调用一次,标志方法字节码访问的开始和结束MethodVisitor如何获得:1.ClassReader中传入的ClassVisitor中返回的MethodVisi...

weixin_28747257的博客 380

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java asm methodvisitor 定义局部变量_Java ASM3学习(3)

MethodVisitorClassVisitor的visitMethod能够访问到类中某个方法的一些入口信息,那么针对具体方法中字节码的访问是由MethodVisitor来进行的访问顺序如下,其中visitCode和visitMaxs仅调用一次,标志方法字节码访问的开始和结束MethodVisitor如何获得:1.ClassReader中传入的ClassVisitor中返回的MethodVisi...

weixin_32183427的博客 865

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

linux 存储映射lun 给_在Linux中针对物理磁盘和LUN映射Oracle ASM磁盘

本文可帮助你查找哪个ASM磁盘映射到哪个Linux分区或DM设备。前言如果你作为Linux管理员长时间退出工作,你可能已经了解了ASM,Device Mapper Multipathing(DM-Multipathing)。有多种方法可以检查这些信息,但是,使用默认命令时,你将获得部分信息。它不会在单个输出中一起显示所有内容。如果要在单个输出中一起检查所有内容,那么我们需要编写一个小的shell脚...

weixin_39532019的博客 587

java asm 读取虚拟机_[原创]ASM动态修改JAVA函数之函数字节码初探

ASM是非常强大的JAVA字节码生成和修改工具,具有性能优异、文档齐全、比较易用等优点。官方网站:http://asm.ow2.org/要想熟练的使用ASM,需要对java字节码有一定的了解,本文重点对java函数的字节码进行介绍。本文部分内容参考官方文档:http://download.forge.objectweb.org/asm/asm4-guide.pdf1.JAVA虚拟机执行模型在JVM...

weixin_39560064的博客 250

ASM 6 Developer Guide

主要数据结构 对象模型 核心程序包由28个类和接口组成。如果我们排除Opcodes接口,5个抽象访问者类(AnnotationVisitor, ClassVisitor,FieldVisitor, MethodVisitor 和 ModuleVisitor)和6实用工具类(ConstantDynamic, Constants,Handle,Type, TypePath 和 TypeReference),这样,只有16个类。 编译类到访问事件的转换仅由一个类(即ClassReader类)完成,该类使用辅助类C

lkl22的专栏 616

ASM总线特点以及在航空中的优势

FC-AE-ASM协议分析 FC-AE-ASM支持确定、安全、低延迟和低开销的关键任务航空系统的通信其消息都是由交换始发端传输给交换响应端的单个序列,另外FC-AE-ASM消息的接收者是无法知道该消息的原始发送端,接收端仅仅只要求这些消息按预定的速率到达即可。而为了更容易地映射其他物理底层传输,因此除了FC通用帧头外,额外地将FC帧的数据负载字段的前16字节作为FC-AE-ASM帧头字段。 Message ID:消息标识符字段用于惟一指定每个系统的消息,且全0和全1保留不用。 Security:保留为设备商

WEIXIN_18202820902 2029

深入解析ASM字节码操作框架:原理、实战与Java生态应用

字节码是Java虚拟机执行的指令集,它构成了Java跨平台能力的基石。通过直接操作字节码,开发者能够在运行时动态修改类行为,实现无需源码的深度定制。这一技术为AOP、热部署、性能监控等高级特性提供了底层支持,广泛应用于框架开发与性能优化场景。ASM作为高性能的字节码操作库,采用访问者模式实现精细控制,其核心API如ClassVisitor和MethodVisitor允许开发者像搭积木一样构建或修改类文件。在Java生态中,ASM是Spring AOP、Lombok、动态代理等热门技术的关键实现基础,为全链路

angou6476的博客 477

JAVA ASM总结篇-03

本文介绍了使用ASM框架进行Java字节码操作的方法。主要内容包括:1) MethodVisitor访问方法字节码的基本流程,包括visitCode和visitMaxs标记开始结束;2) 三种创建ClassWriter的方式及其区别;3) 常用API如visitFieldInsn、visitMethodInsn等指令访问方法;4) 通过示例代码演示如何动态生成getF和setF方法;5) 使用ClassAdapter和MethodVisitor实现方法hook;6) 处理条件跳转和异常抛出的字节码生成技巧。

chuyouyinghe的专栏 94

【学习笔记】ASM 系列一:ClassVisitor

ASM是操作字节码的类库,但并不是唯一的,还有许多其它的操作字节码的类库。 字节码类库,为了方便于人们对于字节码(ByteCode)内容的操作,逐渐衍生出了各种操作字节码的类库。 常见的字节码类库:Javassist、ObjectWeb-ASM、Byte Buddy(在ASM基础上实现的一个类库) ASM是其中一种,它的特点是执行速度快、占用空间小。fast and small。 ASM ASM的应用 ASM所处理对象是字节码数据,也可以直观的理解成.class文件,ASM并不是针对.java文件进行处理

m0_64365896的博客 1678

ASM 翻译系列第八弹:ASM Internal ASM file extent map

当ASM创建一个文件时(例如数据库实例要求创建一个数据文件),它会以extent为单位分配空间。一旦文件被创建,ASM会传递extent映射表给数据库实例,后续数据库实例能在不和ASM实例交互的情况下访问这个文件。如果一个文件的extent需要被重新定位,比如磁盘组进行rebalance操作,ASM会告知数据库实例关于extent映射表的变更。 可以通过查询ASM实例的X$KFFXP视图来获取A

woqutechteam的博客 608
上一篇: antlr3学习以及简单的应用--使用sql语句查询集合中的对象
下一篇: java-shell --像python的shell交互式工具
finallygo
博客等级 码龄18年 2粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值