您的位置:首页 > 博客中心 > 数据库 >

CompoundButton.OnCheckedChangeListener与RadioGroup.OnCheckedChangeListener冲突

时间:2022-03-10 17:32

今天开始学习ucore的lab。

按照lab0的文档,显示介绍了80386的4个工作模式:real-address mode, protected mode, SMM mode, virtual 8086 mode.

ia-32-architectures-software-developer-system-programming-manual-VOL3_Feb2014中的Figure 2-3. Transitions Among the Processor’s Operating Modes是4个mode FSM。

 

在Lab 0的2.6节介绍了ucore的编程方法:用C实现C++的OOP思想:interface(API)。在Absolute C++的Chap 6的tip里面讲了:princeple of encapsulation is on: separate "interface" and "implementation of class".

在http://www.tutorialspoint.com/cplusplus/cpp_interfaces.htm 里面讲了interface一般是用abstract class作为base class。

在 http://www.bottomupcs.com/abstration.html 详述了linux kernal, system with large C based code. 通过使用function pointer来模拟C++的interface/class的OOP。

在 understanding and using pointer in C 中的function pointer里面提到一个drawback: "One concern regarding the use of function pointers is a potentially slower running program. The processor may not be able to use branch prediction in conjunction with pipelining."

这印证了ucore lab0的说法:“Core 的面向对象编程方法,目前主要是采用了类似 C++的接口(interface)概念,即是让实现 细节不同的某类内核子系统(比如物理内存分配器、调度器,文件系统等)有共同的操作方式 ... 接口在 C 语言中,表现为一组函数指针的集合。放在 C++ 中,即为虚表。”

先复习一下 function pointer, structure in C.

 

gxlsystem.com,布布扣

 

然后在2.6.2.1 双向循环链表中学习了ucore中常用的数据结构。这在uc/os-II和freertos里面的freelistTable也用到了。

注意:ucore的double linked list 和C/C++里面的设计方法有点点区别。这是为了适应不同功能的双向链表:有保存task table的,有空闲内存块列表,或者、内存页链表等等。

 

 

CompoundButton.OnCheckedChangeListener与RadioGroup.OnCheckedChangeListener冲突,布布扣,bubuko.com

热门排行

今日推荐

热门手游