<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[doon的专栏]]></title><description><![CDATA[嵌入式GUI的专业模板]]></description><link>https://blog.youkuaiyun.com/doon</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; doon]]></copyright><item><title><![CDATA[Dart FFI的简单分析]]></title><link>https://blog.youkuaiyun.com/doon/article/details/106148490</link><guid>https://blog.youkuaiyun.com/doon/article/details/106148490</guid><author>doon</author><pubDate>Fri, 15 May 2020 20:11:56 +0800</pubDate><description><![CDATA[本文是阅读dart ffi相关的代码记录。
源码的位置
分成几个部分，dart的代码在sdk/lib/ffi下，有4个文件

annotations.dart
dynamic_library.dart  : 定义DynamicLibrary类，用于加载so库
ffi.dart 定义Pointer类
native_type.dart 定义NativeType

Pointer相关的实际实现的代码，
在runtime/lib/ffi_path.dart, 定义的对应的native实现，关键的如

Pointer]]></description><category></category></item><item><title><![CDATA[v8 8.0以上版本中，V8_COMPRESS_POINTERS引发的崩溃]]></title><link>https://blog.youkuaiyun.com/doon/article/details/104404805</link><guid>https://blog.youkuaiyun.com/doon/article/details/104404805</guid><author>doon</author><pubDate>Thu, 20 Feb 2020 08:48:05 +0800</pubDate><description><![CDATA[在移植过程中，遇到了指针崩溃的问题，经过多方查找，终于确定和V8_COMPRESS_POINTERS导致的问题。
V8_COMPRESS_POINTERS是v8新加入的功能。可以节省不少内存占用。如果设置v8_enable_pointer_compression = false就会关闭。
如果关闭了该功能，程序可以正常运行。
实际上，该功能只会在64位上开启。因为该功能是将64位指针压缩为32位指...]]></description><category></category></item><item><title><![CDATA[v8 handlescope的机制]]></title><link>https://blog.youkuaiyun.com/doon/article/details/86604865</link><guid>https://blog.youkuaiyun.com/doon/article/details/86604865</guid><author>doon</author><pubDate>Wed, 23 Jan 2019 09:48:35 +0800</pubDate><description><![CDATA[HandleScope
成员
HandleScope类重要的3个成员
internal::Isolate* isolate_;

intieral::Object** prev_next_;

internal::Object** prev_limit_;

HandleScope::CreateHandle
Object** HandleScope::CreateHandle(Isolate* ...]]></description><category></category></item><item><title><![CDATA[ART深入浅出(7) - OAT文件的格式]]></title><link>https://blog.youkuaiyun.com/doon/article/details/78190510</link><guid>https://blog.youkuaiyun.com/doon/article/details/78190510</guid><author>doon</author><pubDate>Tue, 10 Oct 2017 11:10:51 +0800</pubDate><description><![CDATA[本文基于Android 7.1，不过因为从BSP拿到的版本略有区别，所以本文提到的源码未必与读者找到的源码完全一致。本文在提供源码片断时，将按照 :   的方式，如果行号对不上，请参考类名和函数名来找到对应的源码。

从本章开始，我将介绍OAT文件的格式



以ELF文件格式作为外壳

从手机上下载一个oat文件。一般我都是研究boot.oat。比如，用命令 
adb pull /data/da]]></description><category></category></item><item><title><![CDATA[利用ADB 协议建立PC与手机端本地unix套接字的连接]]></title><link>https://blog.youkuaiyun.com/doon/article/details/78121955</link><guid>https://blog.youkuaiyun.com/doon/article/details/78121955</guid><author>doon</author><pubDate>Thu, 28 Sep 2017 11:40:15 +0800</pubDate><description><![CDATA[设置环境变量 
export ADB_TRACE=adb 
可以取的值包括 all, adb, sockets, packets, rwx, usb, sync, sysdeps, transport, jdwp, services, auth, fdevent, shell 
取多个值用空格分割但是adb 内部限制了输出的字数，导致最重要的writex输出（即最总发送给adb server的数据）]]></description><category></category></item><item><title><![CDATA[android telnet 连接]]></title><link>https://blog.youkuaiyun.com/doon/article/details/78114461</link><guid>https://blog.youkuaiyun.com/doon/article/details/78114461</guid><author>doon</author><pubDate>Wed, 27 Sep 2017 16:37:35 +0800</pubDate><description><![CDATA[adb shell 登录到设备上，需要root权限。然后执行 
busybox telnetd -l /system/bin/sh退出后，在客户端用telnet连接。即使拔掉usb先也可以。]]></description><category></category></item><item><title><![CDATA[ART深入浅出6--了解Dex文件格式（3）]]></title><link>https://blog.youkuaiyun.com/doon/article/details/78016219</link><guid>https://blog.youkuaiyun.com/doon/article/details/78016219</guid><author>doon</author><pubDate>Mon, 18 Sep 2017 10:12:54 +0800</pubDate><description><![CDATA[本节介绍Dex Code的格式。DexCode是Dex虚拟机的核心。]]></description><category></category></item><item><title><![CDATA[ART深入浅出5--了解Dex文件格式（2）]]></title><link>https://blog.youkuaiyun.com/doon/article/details/77466648</link><guid>https://blog.youkuaiyun.com/doon/article/details/77466648</guid><author>doon</author><pubDate>Tue, 22 Aug 2017 08:36:20 +0800</pubDate><description><![CDATA[本节介绍ClassDef的格式。ClassDef是Dex文件内部表示一个类的结构。包含了类的基本数据，如类的名称，访问级别，Field列表，Method列表等信息。]]></description><category></category></item><item><title><![CDATA[ART深入浅出4--了解Dex文件格式（1）]]></title><link>https://blog.youkuaiyun.com/doon/article/details/76549288</link><guid>https://blog.youkuaiyun.com/doon/article/details/76549288</guid><author>doon</author><pubDate>Thu, 10 Aug 2017 15:22:49 +0800</pubDate><description><![CDATA[理解dex文件的指令特定，理解各种id表]]></description><category></category></item><item><title><![CDATA[ART深入浅出3--了解Boot.art和boot-*.art]]></title><link>https://blog.youkuaiyun.com/doon/article/details/76034383</link><guid>https://blog.youkuaiyun.com/doon/article/details/76034383</guid><author>doon</author><pubDate>Tue, 01 Aug 2017 17:57:25 +0800</pubDate><description><![CDATA[在Android7.0之前，所有bootclasspath指定的库会被同一编译成为boot.oat和boot.art两个文件。其中boot.oat包含了编译后的机器码指令，而boot.art文件，则是一个类对象映像。boot.art内包含了所有framework/base/preloaded-classes文件列出的所有类。这些类会被一次性的载入到内存中，并可以被直接使用。]]></description><category></category></item><item><title><![CDATA[ART深入浅出2 -- 认识和了解Runtime Options]]></title><link>https://blog.youkuaiyun.com/doon/article/details/74356136</link><guid>https://blog.youkuaiyun.com/doon/article/details/74356136</guid><author>doon</author><pubDate>Fri, 14 Jul 2017 20:51:56 +0800</pubDate><description><![CDATA[本文基于Android 7.1，不过因为从BSP拿到的版本略有区别，所以本文提到的源码未必与读者找到的源码完全一致。本文在提供源码片断时，将按照
 android工程的路径>:   的方式，如果行号对不上，请参考类名和函数名来找到对应的源码。]]></description><category></category></item><item><title><![CDATA[ART深入浅出1--虚拟机的启动和初始化]]></title><link>https://blog.youkuaiyun.com/doon/article/details/74351615</link><guid>https://blog.youkuaiyun.com/doon/article/details/74351615</guid><author>doon</author><pubDate>Tue, 04 Jul 2017 19:58:31 +0800</pubDate><description><![CDATA[本文基于Android 7.1，不过因为从BSP拿到的版本略有区别，所以本文提到的源码未必与读者找到的源码完全一致。本文在提供源码片断时，将按照 :   的方式，如果行号对不上，请参考类名和函数名来找到对应的源码。


启动虚拟机
我们知道，Android的应用程序和服务都是由zygote进程产生的。zygote进程负责创建一个java虚拟机环境，并调用zygote的java入口。
zy]]></description><category></category></item><item><title><![CDATA[DAVLIK JIT编译实现 （上）]]></title><link>https://blog.youkuaiyun.com/doon/article/details/52312546</link><guid>https://blog.youkuaiyun.com/doon/article/details/52312546</guid><author>doon</author><pubDate>Thu, 25 Aug 2016 11:00:37 +0800</pubDate><description><![CDATA[为什么要讲dalvik jit的编译实现呢？首先，为什么是dalvik？虽然dalvik已经在L版本后不再出现在Android系统中，但是ART是从dalvik继承而来，ART中有很多Dalvik的痕迹。在很多方面，ART都继承了dalvik的思想，如果不深入了解dalvik，对ART的了解也是不全面的。另外，dalvik相对与ART，逻辑结构更加简单和清晰，很多方面都可以看作ART的雏形和蓝本，]]></description><category></category></item><item><title><![CDATA[DALVIK JIT 入口分析]]></title><link>https://blog.youkuaiyun.com/doon/article/details/51198655</link><guid>https://blog.youkuaiyun.com/doon/article/details/51198655</guid><author>doon</author><pubDate>Thu, 18 Aug 2016 14:01:49 +0800</pubDate><description><![CDATA[dvmCompileTrace函数


如何进入到JIT模式？


如何获取需要JIT的代码？


jit出的代码放在哪里？


jit出代码与bytecode的对应关系是什么？


dvmCompileTrace过程分析
BasicBlock


MIR
LIR
Assemble
寄存器分配规则是什么？]]></description><category></category></item><item><title><![CDATA[android N编译遇到的问题]]></title><link>https://blog.youkuaiyun.com/doon/article/details/52092380</link><guid>https://blog.youkuaiyun.com/doon/article/details/52092380</guid><author>doon</author><pubDate>Tue, 02 Aug 2016 11:05:01 +0800</pubDate><description><![CDATA[遇到 Failed to contact Jack server: Problem reading .jack-server/client.pem. Try 'jack-diagnose'
错误。


解决方法是：

jack-admin kill-server
jack-admin uninstall-server


然后make systemimage
可参阅https:]]></description><category></category></item><item><title><![CDATA[dalvik VM的解释器分析]]></title><link>https://blog.youkuaiyun.com/doon/article/details/51963955</link><guid>https://blog.youkuaiyun.com/doon/article/details/51963955</guid><author>doon</author><pubDate>Mon, 25 Jul 2016 17:29:39 +0800</pubDate><description><![CDATA[以KK的dalvik源码为基础来解析。
使用的源码基于https://github.com/AOKP/dalvik， 可以从https://github.com/AOKP/dalvik/archive/kitkat.zip
 下载。
我是在linux下，使用vim + ctags做分析的。
由于ARM架构是使用最多也是最频繁的架构，所以我分析的重点是ARM的汇编如何实现解释器的。所以我在分]]></description><category></category></item><item><title><![CDATA[G1 算法论文]]></title><link>https://blog.youkuaiyun.com/doon/article/details/51698165</link><guid>https://blog.youkuaiyun.com/doon/article/details/51698165</guid><author>doon</author><pubDate>Wed, 20 Jul 2016 00:14:53 +0800</pubDate><description><![CDATA[GC相关术语 
 Compaction – The garbage collection phase that defragments the heap, moves objects in 
memory, remaps all affected references and frees contiguous memory regions. 
 Concurrent – A type of g]]></description><category></category></item><item><title><![CDATA[DVM GC源码研究]]></title><link>https://blog.youkuaiyun.com/doon/article/details/51863325</link><guid>https://blog.youkuaiyun.com/doon/article/details/51863325</guid><author>doon</author><pubDate>Fri, 08 Jul 2016 18:58:14 +0800</pubDate><description><![CDATA[基于KK的代码。本文主要是介绍dalvik GC的一些概况。
DalvikGC概要
Davik GC的主要对象


GCHeap : 管理GC内存的对象，全局只有一个，负责GC的分配和回收HeapSource: 管理Heap的对象。在GC初始化时，分配一段连续的地址空间（maximumSize), 负责管理Heap的增长Heap: 为分配准备的连续空间。HeapSource包含两个Hea]]></description><category></category></item><item><title><![CDATA[通过dexdump来学习DEX文件格式]]></title><link>https://blog.youkuaiyun.com/doon/article/details/51691627</link><guid>https://blog.youkuaiyun.com/doon/article/details/51691627</guid><author>doon</author><pubDate>Thu, 16 Jun 2016 16:27:54 +0800</pubDate><description><![CDATA[一、dexdump简介dexdump是android提供的一个dex文件查看工具，在4.4之前的版本上，我们可以在dalvik的dexdump目录找到源码。这个工具简单而且全面。通过学习这个工具的源码，我们可以很快的对dex文件有一个全面的了解。 
首先看下dexdump的命令行参数：
  dexdump: [-c] [-d] [-f] [-h] [-i] [-l layout] [-m] [-t]]></description><category></category></item><item><title><![CDATA[ART虚拟机参数说明]]></title><link>https://blog.youkuaiyun.com/doon/article/details/51680961</link><guid>https://blog.youkuaiyun.com/doon/article/details/51680961</guid><author>doon</author><pubDate>Wed, 15 Jun 2016 18:42:07 +0800</pubDate><description><![CDATA[property
JVM参数
含义
取值
备注



dalvik.vm.checkjni || ro.kernel.android.checkjni
取true|false

-Xcheck:jni
当调用jni函数时，打开jni检查
 
 







-Xjnigreflimit:
设置JNI全局引用的最大数量
整数，如2000]]></description><category></category></item></channel></rss>