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

IAR下载Linux环境适配:入门级安装指导

详细介绍如何在Linux系统中完成iar下载与环境配置,帮助开发者快速上手IAR集成开发环境,解决常见安装问题,提升开发效率。

weixin_35754676的博客 762

无人机巡检提速3倍!YOLOv8n+OpenVINO让Jetson Nano跑25FPS,还能多飞25分钟

摘要(149字): 针对无人机巡检中Jetson Nano算力不足导致的帧率低、首次推理延迟高、续航短等问题,提出YOLOv8n+OpenVINO联合优化方案: 模型轻量化:YOLOv8n参数量仅3.2M(较v8s减少71%),Jetson Nano帧率从8FPS提升至15FPS(原生),绝缘子裂纹召回率仅降3%; OpenVINO加速:AUTO模式动态分配CPU/GPU算力,首次推理延迟从500ms降至200ms,帧率再优化至25FPS; 能效提升:功耗降低40%,单次续航延长25分钟。方案已落地电力/林

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1242

内联函数(inline function)

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

Programming is an Art 1080

C语言——预处理指令

return 0;这里是可以编译通过的,运行结果也是对的:;;return 0;这里编译器会报错:这里是有语法错误的。在C语言中,#include是一个预处理指令,用于将一个源文件的内容插入到另一个源文件中。这通常用于包含标准库或自定义库的头文件,以便在程序中使用这些库中定义的函数、类型和宏。#include或:用于包含标准库头文件。查找策略是,编译器会在标准库头文件目录中查找这些文件。:用于包含用户自定义的头文件。

Stewie Lee的博客 3189

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

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

Innost的专栏 1万+

NVIDIA Video Codec SDK-解码接口cuvid简介

特性已废弃的 NVCUVID现代的 NVDECODE (底层 API)现代的 NVDECODE (高层 API - NvDecoder)状态已废弃 (Deprecated)官方推荐 (底层控制)官方推荐 (易用性首选)编程模型C 函数C 函数C++ 类复杂度高,需要管理大量细节中高,仍需管理解码会话低,开箱即用灵活性高高中(满足绝大多数场景)推荐对象遗留项目维护需要极致控制的高级用户所有新项目、大多数开发者。

fudexiang的博客 1178

Zemax实战:20×超高清变焦镜头设计全流程解析(从架构到制造)

本文详细解析了使用Zemax软件设计一款20倍变焦比、恒定F2.8光圈8K超高清镜头的全流程。从应对恒定光圈、宽光谱与8K解析力三大挑战的初始架构规划,到构建多重组态模型、分七阶段进行像差优化与公差分析,最终跨越制造鸿沟,为广播级影视与高精度工业检测应用提供了实战指南。

sun99的博客 552

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

在cadence中进行sdf文件的反标及并进行数模混仿

3.在Main-Include Option Settings-Libraries Files/Directories下面加载上面说到的两个.v文件(综合文件和工艺库器件文件),其他默认点击OK;最近在做一个数模混合电路的流片工作,数字部分综合后会生成一个.sdf(标准延时格式)文件,正常来说应该是要在vcs软件上进行电路延时的反标,但由于我的电路需要信号在数字模块和模拟模块中来回循环多次,因此,打算在cadence中完成sdf文件反标,进行数模混合仿真。1.综合生成的电路网表的.v文件;

WSBHX的博客 3271

【个人笔记四】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

HFSS实战项目——Ku波段微带发夹线滤波器

保姆级教程!!!看完必会,非常详细!!!Ku频段5阶切比雪夫微带线带通滤波器的仿真实例。首先介绍了滤波器的技术指标和基本理论知识,重点介绍了滤波器的耦合系数和外部品质因数。建立了谐振器的设计模型、耦合系数与谐振器间距的设计模型、外部品质因数与抽头位置的设计模型和滤波器整体电路的模型。详细介绍了谐振器设计模型的建立步骤。

2401_87464239的博客 3043

18、社区多能源管理与点对点能源交易优化调度策略研究

本文研究了社区多能源管理与点对点(P2P)能源交易的优化调度策略,构建了适用于单一社区多个产消者的P2P交易模型,以用户生产成本最小化为目标,设计了基于ADMM算法的迭代优化方法。通过电热联合调度与能源共享机制,结合光伏、热电联产(CHP)和储能系统(ESS),实现了用户侧能源的高效利用。仿真结果表明,引入P2P交易和CHP设备显著降低了用户能源成本,提高了电力自给率和天然气利用率,减少了对主电网的依赖。研究验证了ADMM算法在分布式优化中的有效性,为未来社区能源系统的智能化管理提供了理论支持和技术路径。

git9versioner的博客 71

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

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

Android开发领域创作者 2048

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

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

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

Innost的专栏 8301

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

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

Innost的专栏 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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、付费专栏及课程。

余额充值