自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

doon的专栏

嵌入式GUI的专业模板

  • 博客(109)
  • 资源 (9)
  • 收藏
  • 关注

原创 Dart FFI的简单分析

本文是阅读dart ffi相关的代码记录。源码的位置分成几个部分,dart的代码在sdk/lib/ffi下,有4个文件annotations.dartdynamic_library.dart : 定义DynamicLibrary类,用于加载so库ffi.dart 定义Pointer类native_type.dart 定义NativeTypePointer相关的实际实现的代码,在runtime/lib/ffi_path.dart, 定义的对应的native实现,关键的如Pointer

2020-05-15 20:11:56 4506

原创 v8 8.0以上版本中,V8_COMPRESS_POINTERS引发的崩溃

在移植过程中,遇到了指针崩溃的问题,经过多方查找,终于确定和V8_COMPRESS_POINTERS导致的问题。V8_COMPRESS_POINTERS是v8新加入的功能。可以节省不少内存占用。如果设置v8_enable_pointer_compression = false就会关闭。如果关闭了该功能,程序可以正常运行。实际上,该功能只会在64位上开启。因为该功能是将64位指针压缩为32位指...

2020-02-20 08:48:05 1451

原创 v8 handlescope的机制

HandleScope成员HandleScope类重要的3个成员internal::Isolate* isolate_;intieral::Object** prev_next_;internal::Object** prev_limit_;HandleScope::CreateHandleObject** HandleScope::CreateHandle(Isolate* ...

2019-01-23 09:48:35 1299

原创 ART深入浅出(7) - OAT文件的格式

本文基于Android 7.1,不过因为从BSP拿到的版本略有区别,所以本文提到的源码未必与读者找到的源码完全一致。本文在提供源码片断时,将按照 : 的方式,如果行号对不上,请参考类名和函数名来找到对应的源码。从本章开始,我将介绍OAT文件的格式以ELF文件格式作为外壳从手机上下载一个oat文件。一般我都是研究boot.oat。比如,用命令 adb pull /data/da

2017-10-10 11:10:51 3711

原创 利用ADB 协议建立PC与手机端本地unix套接字的连接

设置环境变量 export ADB_TRACE=adb 可以取的值包括 all, adb, sockets, packets, rwx, usb, sync, sysdeps, transport, jdwp, services, auth, fdevent, shell 取多个值用空格分割但是adb 内部限制了输出的字数,导致最重要的writex输出(即最总发送给adb server的数据)

2017-09-28 11:40:15 2205

原创 android telnet 连接

adb shell 登录到设备上,需要root权限。然后执行 busybox telnetd -l /system/bin/sh退出后,在客户端用telnet连接。即使拔掉usb先也可以。

2017-09-27 16:37:35 4754

原创 ART深入浅出6--了解Dex文件格式(3)

本节介绍Dex Code的格式。DexCode是Dex虚拟机的核心。

2017-09-18 10:12:54 2315

原创 ART深入浅出5--了解Dex文件格式(2)

本节介绍ClassDef的格式。ClassDef是Dex文件内部表示一个类的结构。包含了类的基本数据,如类的名称,访问级别,Field列表,Method列表等信息。

2017-08-22 08:36:20 1528

原创 ART深入浅出4--了解Dex文件格式(1)

理解dex文件的指令特定,理解各种id表

2017-08-10 15:22:49 1506

原创 ART深入浅出3--了解Boot.art和boot-*.art

在Android7.0之前,所有bootclasspath指定的库会被同一编译成为boot.oat和boot.art两个文件。其中boot.oat包含了编译后的机器码指令,而boot.art文件,则是一个类对象映像。boot.art内包含了所有framework/base/preloaded-classes文件列出的所有类。这些类会被一次性的载入到内存中,并可以被直接使用。

2017-08-01 17:57:25 8423 1

原创 ART深入浅出2 -- 认识和了解Runtime Options

本文基于Android 7.1,不过因为从BSP拿到的版本略有区别,所以本文提到的源码未必与读者找到的源码完全一致。本文在提供源码片断时,将按照 android工程的路径>: 的方式,如果行号对不上,请参考类名和函数名来找到对应的源码。

2017-07-14 20:51:56 2210 1

原创 ART深入浅出1--虚拟机的启动和初始化

本文基于Android 7.1,不过因为从BSP拿到的版本略有区别,所以本文提到的源码未必与读者找到的源码完全一致。本文在提供源码片断时,将按照 : 的方式,如果行号对不上,请参考类名和函数名来找到对应的源码。启动虚拟机我们知道,Android的应用程序和服务都是由zygote进程产生的。zygote进程负责创建一个java虚拟机环境,并调用zygote的java入口。zy

2017-07-04 19:58:31 2473

原创 DAVLIK JIT编译实现 (上)

为什么要讲dalvik jit的编译实现呢?首先,为什么是dalvik?虽然dalvik已经在L版本后不再出现在Android系统中,但是ART是从dalvik继承而来,ART中有很多Dalvik的痕迹。在很多方面,ART都继承了dalvik的思想,如果不深入了解dalvik,对ART的了解也是不全面的。另外,dalvik相对与ART,逻辑结构更加简单和清晰,很多方面都可以看作ART的雏形和蓝本,

2016-08-25 11:00:37 2271

原创 DALVIK JIT 入口分析

dvmCompileTrace函数如何进入到JIT模式?如何获取需要JIT的代码?jit出的代码放在哪里?jit出代码与bytecode的对应关系是什么?dvmCompileTrace过程分析BasicBlockMIRLIRAssemble寄存器分配规则是什么?

2016-08-18 14:01:49 2573

原创 android N编译遇到的问题

遇到 Failed to contact Jack server: Problem reading .jack-server/client.pem. Try 'jack-diagnose'错误。解决方法是:jack-admin kill-serverjack-admin uninstall-server然后make systemimage可参阅https:

2016-08-02 11:05:01 12809 1

原创 dalvik VM的解释器分析

以KK的dalvik源码为基础来解析。使用的源码基于https://github.com/AOKP/dalvik, 可以从https://github.com/AOKP/dalvik/archive/kitkat.zip 下载。我是在linux下,使用vim + ctags做分析的。由于ARM架构是使用最多也是最频繁的架构,所以我分析的重点是ARM的汇编如何实现解释器的。所以我在分

2016-07-25 17:29:39 3928

原创 G1 算法论文

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

2016-07-20 00:14:53 1899

原创 DVM GC源码研究

基于KK的代码。本文主要是介绍dalvik GC的一些概况。DalvikGC概要Davik GC的主要对象GCHeap : 管理GC内存的对象,全局只有一个,负责GC的分配和回收HeapSource: 管理Heap的对象。在GC初始化时,分配一段连续的地址空间(maximumSize), 负责管理Heap的增长Heap: 为分配准备的连续空间。HeapSource包含两个Hea

2016-07-08 18:58:14 2112

原创 通过dexdump来学习DEX文件格式

一、dexdump简介dexdump是android提供的一个dex文件查看工具,在4.4之前的版本上,我们可以在dalvik的dexdump目录找到源码。这个工具简单而且全面。通过学习这个工具的源码,我们可以很快的对dex文件有一个全面的了解。 首先看下dexdump的命令行参数: dexdump: [-c] [-d] [-f] [-h] [-i] [-l layout] [-m] [-t

2016-06-16 16:27:54 15627 3

原创 ART虚拟机参数说明

propertyJVM参数含义取值备注dalvik.vm.checkjni || ro.kernel.android.checkjni取true|false-Xcheck:jni当调用jni函数时,打开jni检查  -Xjnigreflimit:设置JNI全局引用的最大数量整数,如2000

2016-06-15 18:42:07 6837 3

原创 dalvik字节码问答

什么是字节码?字节码的长度怎么计算?字节码的格式是什么?const类指令有那些?和类、对象操作相关的指令有哪些?switch相关指令是怎么回事?Array数据操作指令有那些?quick类型的指令有那些,起到什么作用?execute-inline指令是怎么回事?

2016-05-10 19:52:18 3850

原创 匿名类和final外部变量的实现

匿名类和final外部变量的实现

2016-05-10 10:27:28 2003

原创 杂谈:关于声明式语言

对于一个需要构建复杂的内存结构,相互之间有复杂的依赖关系的应用,如GUI等,用什么样的开发方法最好?首先,是个语言选择的问题。C/C++,以及java这样的语言,是基于命令式的。命令式的语言,强调的是做事的步骤,先做什么,后做什么。前面的步骤直接影响后面的步骤。这样的语言很容易被理解,却不能创造出简洁、复杂而高效的程序。对于函数式语言,虽然我了解不多,但是相对于命令

2016-04-19 19:17:18 3273

原创 怎么挂载android system.img

首先使用simg2img将其解压为raw image, 然后用mount 挂载。如 out/host/linux-x86/bin/simg2img out/target/product//system.img raw_system.imgsudo mount -t ext4 raw_system.img /mnt/android/system

2016-01-05 10:42:47 7123

原创 你所不知到的C++ 之 多重继承

1. C++中class与struct。在C++里面,class与struct没有本质的区别,只是class的默认权限是private,而struct则是public。这个概念也揭示了一点:class和struct在内部存储结构上是一致的。所以我们可以利用这一点来探讨class的实现原理。我们可以将class转换成对应的struct对象,通过struct的简单性来展示class的内存存储结构。

2015-03-25 13:52:14 1120

原创 你所不知道的C++ 之 C++虚类模型

我们知道,一个C++类如果带有virtual关键字的函数,那么,它就是一个虚类。虚类都有虚函数表。这个虚函数表真的存在吗?能摸得着、看得见吗?的确是可以的。下面我们就展示一下如何看到C++类的虚函数表。

2015-03-11 10:09:09 2137

原创 你所不知到的C++ 之 宏的用法

前言严格的说,宏并不是C++语言的组成部分。宏是一种文本替换语言,用在C/C++的预编译系统中。宏能在一定程度上简化代码。宏主要有#include, #define, #if/#else#elseif#endif和#line等一些语法组成。宏在C/C++中是不可或缺的。比如#include指令。在增强可移植性上也起到了非常重要的作用。当然,当你使用#define的时候,如果使用

2015-03-10 16:32:43 1186

原创 你所不知道的C++ 之 使用typename

当使用模板类型中定义的类型时,该怎么办呢?可以使用关键字typename。例如class AType {public: typedef int value_type;};templateclass TSample { typedef typename T::value_type value_type;}当使用TSample的时候,TSample的value

2015-03-10 15:47:36 1154

原创 你所不知道的C++ 之 令人疑惑的默认构造

最近写代码的时候发现一个奇怪的现象:当我声明一个无参构造函数时,如果后面加上括号,声明出的对象就不能显示。比如下面的代码:#include class Test {public: Test() { printf("Test constructed\n"); }};int main(){ printf("==== t1:\n");

2015-03-10 15:36:42 1273

原创 ART如何实现Exception.printStackTrace

大家都很熟悉Exception.printStackTrace,而且也非常的常用。不过,各位有没有想过应该如何实现呢?想象一下,当我们调试一个C/C++程序的时候,我们也能看到函数的调用堆栈,一定会想,这究竟是怎么做到呢?因为ART运行的也是机器码,那么它们也一定有共同的地方吧。当然,我们并不是真正的去了解一个C/C++程序是如何实现调试的,我们只是借鉴一下它的原理。以

2015-01-24 12:19:53 1520

原创 ART是怎么实现参数传递的?

在Java世界,有两类函数:普通的函数和native函数。Native函数是由C/C++或者汇编语言实现的函数。那么,函数之间的调用就有:普通->普通,native->普通,普通->native。这三种类型的调用,可以发生在任意时间、任意地点,以任意方式来调用。那么,这三种调用方式必然存在很大的共同点。如果我们能够破解一种的话,那么其余两种也就能够很轻易的破解了。那么,选哪一种

2015-01-22 14:24:59 3592 1

原创 序言

屈指算来,在软件开发这个行业工作也有10个年头了,可惜没有积累下什么东西。因为工作关系,对Android的ART进行了深入研究。我对ART工作的机制和原理产生了兴趣,有一种想把它搞清楚的冲动。ART可以说是一个杰作!它融合了虚拟机、编译器、GC等各方面的知识和原理,具有很高的学习价值。对于一个希望提高自己的层次的开发人员,学习ART恐怕是最好的方法了。也是基于这个想法,我想把我对A

2015-01-22 14:23:35 1281 2

原创 在PreferenceAcitity中使用Fragement时避免额外的Left和RightPadding

On Android 4.4遇到过这样的问题:注意到,上面的ActionBar部分的左右各有48像素的padding。 要了解该问题的成因,要首先了解其结构:该页面的Activity是一个PreferenceActivity,是个三级页面,是通过上一个PreferenceActivity调用startWithFragment启动的;该页面的内容是放置了一个Fragmen

2014-07-16 10:20:34 2508

原创 Override ListView getAdapter造成的后果

最近工作中,发现了一个bug,是和ListView Adapter有关的。产生了FC,描述信息大约是"The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a b

2014-07-05 22:42:47 4360

原创 PopupWindow的一些使用总结

这是我在使用PopupWindow过程中的一点小经验

2014-06-26 09:22:11 12160 2

原创 V8 javascript引擎初步体验

v8 引擎,不必多说,大名鼎鼎,迄今最快的js引擎。这么好的东西,如果尽在浏览器中使用,太浪费了,也希望用到其他地方,比如一些客户端开发中。闲言少讲,这就开始下载源码去官方网站:https://code.google.com/p/v8/我喜欢用git,所以从这里下载git clone git://github.com/v8/v8.git v8 && cd v

2014-06-19 13:23:59 26351

原创 android精确绘制文字位置的方法

android 中使用Canvas的drawText绘制文本的位置,是基于基线的。如下图:其中字母Q的小尾巴在横线下面了。怎么样找准字母的中心位置呢?先看下面的例子:(右边的数字,表示字体的 left, top, right, bottom)这里面的关键是Paint.getTextBound。 getTextBound会填充一个Rect,这个Rect表示

2014-06-06 14:22:57 13701

原创 Android listview 利用反射的自动绑定Adapter

网上有很多介绍ListView的用法,大多涉及了Adapter。Android提供的Adapter主要有ArrayAdapter, SimpleAdapter, SimpleCursorAdapter。当然,也介绍了如何自己从BaseAdapter继承的方法。但是,这些文章介绍的方法距离实际使用还是很有距离的,基本处于练手的级别。对于很多开发者来说,实现一个功能复杂、效率高的ListView还

2014-01-07 16:19:29 3691 4

原创 cppquery 简单的数据绑定对话框

上一篇文章: cppquery:用C++模仿jquery的探索获取cppquery: https://github.com/coderebot/cppquery在本文中,我们用绑定的方法来实现一个对话框:将高度和宽度值绑定到一个对话框上,并能够修改。如图当然,从windows编程上来说,这只是一个非常入门的功能。我们从这里出发,来看看我们能够简化到何种程度。该窗

2013-12-31 14:31:51 1802

原创 cppquery:用C++模仿jquery的探索

获取cppquery: https://github.com/coderebot/cppqueryCPPQuery是什么CPPQuery是仿照jquery,顾名思义,就是c++ query。它是针对windows API的GUI,提供一套类似jquery的接口。目的是:简化GUI的编程,最终目的是构建一个更加简洁和智能的MVC架构。主要目标有:将GUI中分散的代码集中处

2013-12-26 11:10:46 2987

android svg 的源码资源

这是我从网上取下来的,因为那个网要注册,为方便网友,放到这里了。是android svg的资源http://www.codeproject.com/KB/android/Android_SVG_support/ImageViewSvg.zip 衷心感谢原作者

2014-06-29

android listview 自反射 adapter

android listview的一个例子。使用了java的反射功能,实现自动构建adapter,不需要自己从BaseAdapter继承

2014-01-07

V8 windows版本开发库(Debug)

这是windows版本的v8引擎库。您可以使用该库在windows上开发v8解释器和运行器,并用它来执行js代码

2013-10-23

PDF: webkit工作原理

介绍webkit的工作原理的ppt。HTML, CSS, JS, RenderTree,介绍webkit的结构组成、层次划分、解析和渲染过程等。

2013-07-09

金字塔原理

麦肯锡关于如何写作和思想组织的一本书,对于软件设计和管理也非常有用

2013-06-04

MiniGUI源代码for windows

MiniGUI源代码,适合vs2005编译的内容。

2012-09-04

vmware 为vxworks使用的PCNET驱动

vmware 为vxworks使用的PCNET驱动,详细步骤见

2012-02-10

MiniGUI Foundation Classes

MiniGUi的C++封装类。仿照的是MFC,可以方便开发,一些框架还是不错的。

2011-12-12

android_html_xml_sample

http://blog.csdn.net/doon/article/details/7022453

2011-11-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除