標籤:
依舊是好記性不如爛筆頭,今天需要學習的是arch-arm目錄下的代碼。
首先我們先看一下inclue目錄下的endian這個標頭檔我們主要是需要知道下面的幾點知識。
1、先看一下下面的代碼的片段
#if !defined __ARM_ARCH_5__ && !defined __ARM_ARCH_5T__ && !defined __ARM_ARCH_5TE__ && !defined __ARM_ARCH_5TEJ__ && !defined __ARM_ARCH_4T__ && !defined __ARM_ARCH_4__
正如google上面的注釋文本所說:
REV與REV16在ARM5與ARM4上面是停用。同時說明了沒有包含<machine/cpu-features.h>這個標頭檔的原因是因為它會使用類似如PLD的符號串處理語言來汙染命名空間。
接下來我們看到的是marchine目錄下的一些標頭檔的定義。
在_types這個標頭檔中,我們看以下的代碼的片段:
#define _SIZE_T#define _SSIZE_T#define _PTRDIFF_Ttypedef unsigned long size_t;typedef long ssize_t;typedef long ptrdiff_t;#endif
正如Google所注釋的那樣:
核心定義size_t作為無符號的整型資料,但是g++卻希望它的類型是無符號long類型的資料。
接下來主要是仔細的來看一下cpu-features這個標頭檔的定義:
1、正如注釋所說的那樣,這個標頭檔定義的目的是定義若干符號串語言來積極響應CPU的特色。同時這些CPU的特色在目標的CPU上面再編譯時間刻也許是不能夠使用的。
2、這樣做的目的是使我們從各種不同的Arm的體繫結構中抽象出來。
3、ieee這個標頭檔的作用是定義依賴機器的浮點型資料的結構。
接下來查看一下kernel這個標頭檔的定義:
在這個檔案中主要是定義核心特定的定義,最佳化了核心的標頭檔。
Android核心源碼bionic目錄下的子目錄arch-arm源碼分析筆記