2012年10月18日 星期四

C和組合語言對於組語符號引用的差異 (ARM & x86)

之前在trace U-Boot source codes的時候發現了C對於組語內符號的引用方式非常奇特
搜尋了一下相關的資料發現也有人有跟我一樣的疑問

U-Boot中的board_init_f()
(定義在:arch/arm/lib/board.c)


2012年10月15日 星期一

Linux Kernel: ARRAY_SIZE()

通常我們在C語言中取得陣列的元數個數可以透過下列的方式來計算:


2012年10月14日 星期日

Linux Kernel: BUILD_BUG_ON_ZERO() / BUILD_BUG_ON_NULL()

之前在trace Linux Kernel source codes時發現了兩個很特別的macro:BUILD_BUG_ON_ZERO() 和 BUILD_BUG_ON_NULL()
(定義在:include/linux/kernel.h)
它們的定義如下:


2012年5月8日 星期二

Linux Kernel: __lookup_processor_type

最近在trace Linux Kernel的bootup流程
過程中也發現了assembly與linker script之間的有趣"交流"
特別記錄一下.....
以下的code將以Linux 3.3.4的版本做說明