ART中的内联函数笔记

Android ART编译模式解析 ART实际就是Android runtime的缩写,他是Android版本新的虚拟机。 阅读详情

inline用来定义一个类的内联函数,用它来替代C中表达式形式的宏定义,而且消除宏定义缺点。可以解决一些频繁调用的函数大量消耗栈空间问题。它是一种实现关键字,就是在函数实现的地方加上inline关键字才有用,在声明的地方加没有用。

同时它只是一种建议,编译器可以忽略这个建议。因此Inline不一定就会被编译器内联编译。保证内联函数的定义被编译器看到的话,使用 ALWAYS_INLINE。

内联函数在编译器最终生成的代码中是没有定义的,这个函数是不存在的,也就无法实现对内联函数的hook;

内联函数没有普通函数调用时的额外开销(压栈,跳转,返回等);

内联函数是一种特殊的函数,在源码中具有普通函数的特征;

内联函数是对编译器的一种请求.因此,编译器有可能拒绝这种请求;内联函数由编译器处理,直接将编译后的函数体插入调用的地方。

内联和宏的效果很像,但是宏代码是由预处理器处理,进行简单的文本替换,没有任何编译过程.

如何hook 编译之后的内联函数?

进入该内联函数源码复写一份同样的代码,但是定义为普通函数,编译源码之后即可hook

荣耀笔记本家族梳理完毕:Art、Pro、X Plus和X系列 同时,它配备了酷睿Ultra9 - 285H处理器,配合锐炫核显,具备Xess技术、光线追踪、AI加速、Intel QSV视频加速等功能,无论是日常办公、高清视频播放还是运行一些对性能要求较高的游戏和专业软件,都能轻松应对,运行流畅。在接口方面,2025款提供了2个全功能USB - C3.2Gen2,USB - A3.2 Gen1,USB - A3.2 Gen2,HDMI1.4b、音频接口,2A2C的接口配置基本能够满足用户日常外接设备的需求,如连接投影仪进行演示、外接移动硬盘传输数据等。 阅读详情

相关推荐

Android Art Hook 技术方案

Android Art Hook 技术方案 by 低端码农 at 2015.4.13 www.im-boy.net 0x1 开始Anddroid上的ART从5.0之后变成默认的选择,可见ART的重要性,目前关于Dalvik Hook方面研究的文章很多,但我在网上却找不到关于ART Hook相关的文章,甚至连鼎鼎大名的XPosed和Cydia Substrate到目前为止也不支持ART的Hook。

简行之旅 3万+

【底层机制】ART虚拟机深度解析:Android运行时的架构革命

ART(Android Runtime)是Android操作系统上的应用运行时环境,取代了最初的Dalvik虚拟机。从技术本质看,ART是一个基于AOT(Ahead-Of-Time)编译的托管代码执行环境,负责Android应用的字节码翻译、内存管理、线程调度和系统服务交互

沐怡旸的专栏 2108

【个人笔记一】ART系统类的编译解析加载探究

在ART上用YAHFA、Legend以及一个java层实现的Andix:ART深度探索开篇:从Method Hook谈起对系统中不同的类进行hook,发现除了framework层的类(如telephonymanager)和应用中的类有效外,对于java核心库的类(如IOBridge和Class等)的hook都无效,所以我就以telephonymanager和IOBridge这两个类为例,试图从编译

朱小南的博客 5711

ART世界探险(18) InlineMethod

下面我们正式开始分析InlineMethod将Dalvik字节码转成MIRGraph的过程

lusing的专栏 1767

Openwrt 备份和恢复ART信息

Openwrt 备份和恢复ART信息 环境 MT7688 EVB with SPI FLASH U-Boot 1.1.3 Openwrt 19.07 ART说明 Openwrt有一个ART分区(或者叫factory分区),用于保存相关无线网络的信息,比如射频调教参数和MAC地址。 如果ART分区被误擦除或者不匹配,射频性能可能大打折扣甚至无法启用wifi功能 过程 获取分区信息 cat /proc/mtd 可以看到mtd2为art分区,并且大小为0x10000 = 64KB 提取ART分区文件 读取

mcai33的博客 6911

高通针对ART2的 资料分享

文档:4.8atheros中的art分区数据生成过程,... 链接:http://note.youdao.com/noteshare?id=8156e8865ae0dfcf108c13443c9cedd5&sub=F204ED45C8554547BDBF1BB044E67ED8 文档:9558art编译.note 链接:http://note.youdao.com/noteshare?id=73e22f71964f7abac4a1c6408f553626&sub=2288246E68D84.

OpenWrt/WLAN/驱动/Android/嵌入式开发总结 2049

简明扼要地谈谈v8的隐藏类和Inline Cache(內联缓存)

还有一个是从AST直接生成机器码,但是这个现在已经被换成了Ignition(解释器)+TurboFan(类型优化编译器)的架构了。 先说隐藏类:对一个JS对象的属性访问而言,最简单的解释器实现会把属性建模为运行时的hash查询。然而这个性能太慢,怎么优化呢?简单的说就是参考静态编译器的思路,把属性field的按名字访问,抹掉名字信息,变成按offset访问。——不过这样就需要一个clas

cteng的专栏 2762

ART算法在CT图像重建中的原理与实战实现

最常用的残差定义为:\mathbf{r}其中 $ i $ 表示第 $ i $ 条射线,$ j $ 遍历所有体素。该差值反映了当前图像估计无法解释的那部分测量响应,理论上应在迭代过程中逐渐趋于零。然而,在实际应用中,原始残差易受噪声干扰。因此常采用加权形式增强稳健性:\tilde{r}分母表示第 $ i $ 条射线穿过的总路径长度(或非零权重数),$ \epsilon $ 为小常数以防除零。这种归一化使得不同角度、不同位置的残差具备可比性。

weixin_33506815的博客 1204

ART环境对Android热修复方案的影响分析

一、ART(Android Runtime) ART是Android在4.4版本中引入的新虚拟机环境,在5.0版本正式取代了Dalvik VM。ART环境下,App安装时其包含的Dex文件将被dex2oat预编译成目标平台的机器码,从而提高了App的运行效率。在这个预编译过程中,dex2oat对目标代码的优化过程与Dalvik VM下的dexopt有较大区别,尤其是在5.0版本以后ART环境下新

我的专栏 2052

Visual studio 2013 配置 Halcon 13 (非抄袭)

Visual studio 2013 配置 Halcon 13.0.2.2 (其他版本适用) 针对网上抄袭的配置方法均不可用,写了一篇亲试可行的配制方法。如下: 1.下载Halcon安装后(C:\Program Files\MVTec\HALCON-13.0) 添加环境变量,(按下win按键,键入“环境变量”,出现 “编辑系统环境变量”后按下enter即可打开,下方找到“环境变量”按钮)的系...

huyanjackson的专栏 1042

闲鱼客户端三重动态签名机制解析:x-sign、x-mini-wua与x-umt

在移动客户端安全通信中,设备级动态签名已成为主流App防范自动化攻击的核心手段。其原理是将设备指纹、运行时行为与可信硬件标识深度融合,生成不可复用、不可跨端、不可静态伪造的请求凭证。这类机制超越传统Token或Session鉴权,具备强上下文绑定性与实时熵值校验能力,广泛应用于电商、社交及开放平台等高风险接口场景。技术价值体现在有效识别模拟器、无头浏览器与集群化爬虫,同时保障多端一致性与合规数据对接。本文聚焦闲鱼客户端实际落地的x-sign(带设备上下文的混合签名)、x-mini-wua(小程序行为水印)与

weixin_35732273的博客 496

内联函数(inline function)

内联函数定义:嵌入到主调函数中的函数,可以避免函数调用带来的时间开销    只要在函数声明语句或者函数头一处写上inline关键字即可表示该函数是一个内联函数 要求: 1.不能包括复杂的控制语句 2.不能包括递归调用语句 3.不能有太多的函数体语句 即使定义了inline函数,但如果没有达到上述要求的时候,系统还是会当作普通函数来处理 代码例子: #include Using n

Programming is an Art 1080

来!简单了解一下计算机发展史!

​ 1936年,英国数学家阿兰・麦席森・图灵提出了一种抽象的计算模型——图灵机( Turing machine)。图灵机,又称图灵计算机,即将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人类进行数学运算。​ 图灵机是一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。

m0_57290404的博客 2907

了解一下,Android 10中的ART虚拟机(I)

缘起从今天开始,对Android 10中的ART进行“了解一下”之旅。我本来以为一篇就能拿下,但谁想谷歌从8.0开始对ART进行了更细致和难度更高的改进。粗看了几遍代码,我觉得谷歌不管怎...

Innost的专栏 1万+

macOS 发票查验全攻略:从证书导入到Safari调试

本文详细介绍了在macOS上进行发票查验的全流程,包括证书下载、钥匙串访问导入、Safari浏览器调试等关键步骤。重点解决了验证码不显示等常见问题,提供了证书信任设置和开发者工具使用的实用技巧,帮助用户顺利完成税务发票在线查验。

weixin_29204749的博客 546

AFSim2.9.0学习笔记 —— 4.1、创建项目,以此项目介绍工作中Wizard使用(红方/蓝方武器平台、阵营、更换图标等,多图详细介绍)

AFSim2.9.0学习笔记 —— 4.1、创建项目,以此项目介绍工作中Wizard使用(红方/蓝方武器平台、阵营、更换图标等,多图详细介绍)

2252

Android ART Dex2Oat相关笔记

前言 最近在了解ART相关的内容,这里做下笔记记录下。 官方文档:Android Runtime (ART) 和 Dalvik:详细的介绍了ART的特性和功能。 ART 概念 Android Runtime (ART) 是 Android 上的应用和部分系统服务使用的托管式运行时。ART 及其前身 Dalvik 最初是专为 Android 项目打造的。作为运行时的 ART 可执行 Dalvik 可执行文件并遵循 Dex 字节码规范。 ART 和 Dalvik 是运行 Dex 字节码的兼容运行时,因此针

Notzuonotdied的博客 1188

196、NPU的编译器开发:教程与示例代码编写

NPU编译器开发实战指南 摘要:本文分享了NPU编译器开发中的核心挑战与实战经验,通过具体代码示例展示了关键实现技术: 指令生成:必须考虑硬件特性(如地址对齐)和芯片配置抽象化 图优化:重点处理常见冗余结构(Reshape合并、BN融合),并注意数值稳定性 算子拆分:采用分块计算策略适配有限SRAM,需特别注意边界条件处理 内存分配:基于张量使用频率的贪心算法优化SRAM使用效率 文中包含多个真实踩坑案例: DMA地址未对齐导致硬件错误 BN融合时的除零风险 tile边界处理不当引起的精度下降 这些经验为开

m0_50546716的博客 89

【个人笔记四】ART系统执行类方法流程分析

在ART上用YAHFA、Legend以及一个java层实现的Andix: http://weishu.me/2017/03/20/dive-into-art-hello-world/,发现除了framework层的类(如telephonymanager)和应用中的类有效外,对于java核心库的类(如IOBridge和Class等)的hook都无效,所以我就以telephonymanager和IOBridge这两

朱小南的博客 1694

【制作100个unity实战之2】实现一款简单的FPS游戏

你将学到: fps武器脚本 基础瞄准功能 僵尸敌人AI 巡逻范围 攻击间 搜寻半径 追击 枪声吸引周围的僵尸 击中僵直效果

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 3552

48、住宅抵押贷款支持证券的定价、风险评估与结构化设计

本文深入探讨了住宅抵押贷款支持证券(RMBS)的定价、风险评估与结构化设计。内容涵盖提高定价准确性的方差缩减方法,如准蒙特卡罗序列的应用;分析RMBS面临的利率风险、信用风险和模型风险,并提出相应的度量与应对策略;介绍利用动态规划优化CMO分层结构以最大化发行利润的方法。同时总结了RMBS的基本类型、定价流程及市场发展趋势,为投资者和发行人提供全面的决策支持。

quiet的专栏 154

Android Runtime双亲委托模型在ART中的实现(24)

双亲委托模型是Java类加载机制的核心设计模式,其核心思想是:当一个类加载器收到类加载请求时,它首先不会自己尝试加载这个类,而是把请求委托给父类加载器去完成,依次向上递归,直到最顶层的类加载器 。只有当父类加载器无法完成加载任务时,子类加载器才会尝试自己去加载 。这种模型确保了类加载的层次性和一致性,避免了类的重复加载和安全隐患 。

Android开发领域创作者 2048

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

了解一下,Android 10中的ART虚拟机(6)

缘起继续从读书笔记的角度来系统的学习《Advanced Design and Implementation of Virtual Machines》。今天介绍第六章“Design of ...

Innost的专栏 8301

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

了解一下,Android 10中的ART虚拟机(2)

缘起接着上期”了解一下,Android 10中的ART虚拟机(I)“,今天继续介绍ART。今年春节十几天假里,我大概把profman和dex2oat整体看了一遍。出乎我意料的是,dex2...

Innost的专栏 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ART 在 Android 安全攻防中的应用

在日常的 Android 应用安全分析中,经常会遇到一些对抗,比如目标应用加壳、混淆、加固,需要进行脱壳还原;又或者会有针对常用注入工具的检测,比如 frida、Xposed 等,这时候也会想知道这些工具的核心原理以及是否自己可以实现。 其实这些问题的答案就在 Android 的 Java 虚拟机实现中。可以是早期的 Dalvik 虚拟机,也可以是最新的 ART 虚拟机。从时代潮流来看,本文主要专注于 ART。不过,为了铭记历史,也会对 Dalvik 虚拟机做一个简单的介绍。

有价值炮灰 1209

android的ART虚拟机初探

背景在android4.4版本开始引入ART虚拟机,并从Android 5.0系统开始,ART虚拟机(Android Runtime)就彻底代替了原先的Dalvik虚拟机,成为Android系统上新的虚拟机。Dalvik虚拟机缺陷1.Dalvik是为32位设计的,不适用于64位CPU。2.单纯的字节码解释加JIT编译的执行方式,性能要弱于本地机器码的执行。3.无论是解释执行还是JIT编译都是单次运行过程中发生,每运行一次都可能需要重新做这些工作,这样做太浪费资源。

logic1001的博客 1522
上一篇: ART中的C++对象内存布局
下一篇: 定制ART跟踪JNI函数绑定
Viewz
博客等级 码龄9年 309粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值