青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天衣有縫

冠蓋滿京華,斯人獨(dú)憔悴~
posts - 35, comments - 115, trackbacks - 0, articles - 0
   :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
內(nèi)核當(dāng)然可用用c++來(lái)些,但是相對(duì)c來(lái)說(shuō)有許多要注意的地方,我們不得不關(guān)掉一些特性。這里只提一些gcc相關(guān)的內(nèi)容,Microsoft VC我沒(méi)有嘗試。轉(zhuǎn)載請(qǐng)注明原創(chuàng):天衣有縫(http://m.shnenglu.com/jinglexy),MSN: jinglexy at yahoo dot com dot cn

1)g++選項(xiàng)-nostartfiles:用戶環(huán)境的在main之前調(diào)用的代碼,當(dāng)然不能使用了
2)全局對(duì)象:每種類型都有自己的構(gòu)造函數(shù),如果不自己編寫(xiě)代碼調(diào)用,它們不會(huì)執(zhí)行。
這包括所有全局對(duì)象和局部static對(duì)象,建議的做法是在內(nèi)核棧建立后,c++運(yùn)行代碼執(zhí)行之前
調(diào)用構(gòu)造函數(shù),如果構(gòu)造函數(shù)沒(méi)有運(yùn)行(假設(shè)里面有分配內(nèi)存之類的操作),后果很嚴(yán)重:)
我們可以這樣做:
先修改gnu-ld鏈接腳本
.data : {
    start_ctors = .;
    *(.ctor*)
    end_ctors = .;
    start_dtors = .;
    *(.dtor*)
    end_dtors = .;

    *(.data)
}
這樣構(gòu)造函數(shù)的指針就都保存在start_ctors 和end_ctors之間的內(nèi)存中了,構(gòu)造函數(shù)其實(shí)就是void foo(void);形式的函數(shù),編寫(xiě)一個(gè)for循環(huán)

調(diào)用它即可;析構(gòu)函數(shù)也是一樣的。當(dāng)每個(gè)構(gòu)造函數(shù)調(diào)用完后,gcc會(huì)自動(dòng)調(diào)用一個(gè)函數(shù):
int __cxa_atexit(void (* f)(void *), void *p, void *d);
當(dāng)內(nèi)核退出時(shí),會(huì)執(zhí)行一個(gè)函數(shù):
void __cxa_finalize(void *d);
這兩個(gè)函數(shù)必須按上面格式定義,g++是這樣規(guī)定的。看看下面的代碼就明白了:
extern "C"
        {
        int __cxa_atexit(void (*f)(void *), void *p, void *d);
        void __cxa_finalize(void *d);
        };

void *__dso_handle; /*only the address of this symbol is taken by gcc*/

struct object
{
        void (*f)(void*);
        void *p;
        void *d;
} object[32] = {0};
unsigned int iObject = 0;

int __cxa_atexit(void (*f)(void *), void *p, void *d)
{
        if (iObject >= 32) return -1;
        object[iObject].f = f;
        object[iObject].p = p;
        object[iObject].d = d;
        ++iObject;
        return 0;
}

/* This currently destroys all objects */
void __cxa_finalize(void *d)
{
        unsigned int i = iObject;
        for (; i > 0; --i)
        {
                --iObject;
                object[iObject].f(object[iObject].p);
        }
}

3)new和delete:在完成內(nèi)存管理后,重載類的new和delete函數(shù)
4)-nostdlib:把標(biāo)準(zhǔn)庫(kù)禁用掉,最近有了移植stl到內(nèi)核的想法
5)RTTI:最好是禁止它,這樣不能用typeid 和 dynamic_cast了
6)禁用異常:-fno-exceptions,這個(gè)和操作系統(tǒng)太緊密了
7)純虛函數(shù),如果子類沒(méi)有實(shí)現(xiàn)父類中的純虛函數(shù),鏈接到下面默認(rèn)例程:
extern "C" void __cxa_pure_virtual()
{
    // print error message
}
雖然不是為了定義純虛類的對(duì)象,但是鏈接時(shí)編譯器會(huì)抱怨,所以定義上面函數(shù)使編譯通過(guò)。
8)如果一定要使用異常,rtti,new/delete,gcc中提供了靜態(tài)庫(kù):libgcc/libsupc++,
還得寫(xiě)這個(gè)庫(kù)的一些基礎(chǔ)函數(shù),覺(jué)得它應(yīng)該是在上層抽象出接口,將底層實(shí)現(xiàn)空出來(lái)給用戶實(shí)現(xiàn)。
而且代碼本身非常復(fù)雜,網(wǎng)絡(luò)上也沒(méi)有任何中文資料。
指令:
readelf -a `gcc -print-libgcc-file-name`
里面定義了很多的函數(shù)。

Feedback

# re: C++寫(xiě)內(nèi)核需要注意的一些事情(原創(chuàng))  回復(fù)  更多評(píng)論   

2007-12-22 09:30 by Nubix
頂一下
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            99国内精品久久| 国产精品超碰97尤物18| 日韩网站免费观看| 亚洲精品国产精品久久清纯直播| 久久久久久久久久久一区| 欧美一区二区三区四区在线观看地址| 亚洲影院免费观看| 欧美一区二区视频在线| 欧美一区91| 免费亚洲电影在线| 亚洲精品欧洲| 亚洲在线视频| 久久麻豆一区二区| 欧美日韩dvd在线观看| 国产精品狼人久久影院观看方式| 国产人成一区二区三区影院| 永久555www成人免费| 亚洲免费成人av电影| 亚洲欧美一区二区在线观看| 久久美女性网| 洋洋av久久久久久久一区| 久久精品国产2020观看福利| 欧美日韩的一区二区| 国内自拍视频一区二区三区| 夜夜嗨av一区二区三区网站四季av| 亚洲男人av电影| 美日韩精品视频免费看| 一本色道精品久久一区二区三区 | 亚洲精品国产精品国自产观看浪潮| 在线一区二区三区四区| 久久久久久夜精品精品免费| 欧美日韩一区二区三区免费| 影音先锋亚洲一区| 亚洲综合999| 亚洲第一偷拍| 久久成人国产精品| 国产精品黄视频| 亚洲伦理在线| 可以看av的网站久久看| 亚洲视频1区2区| 欧美精品激情| 亚洲第一区在线| 欧美一级免费视频| 一本色道久久88综合亚洲精品ⅰ| 久久亚洲综合色一区二区三区| 国产精品美女久久久久久久| 韩国v欧美v日本v亚洲v| 久久久久久久综合| 国产精品video| 一区二区三区视频免费在线观看| 久热综合在线亚洲精品| 午夜视频精品| 国产区精品视频| 亚洲综合色网站| 亚洲欧洲另类国产综合| 欧美成人a视频| 亚洲激情在线| 欧美刺激性大交免费视频| 久久成人在线| 国内成人在线| 久久午夜精品| 久久久国产一区二区| 国模大胆一区二区三区| 久久久久久穴| 久久久久一区二区三区| 国产综合激情| 久久综合综合久久综合| 久久大逼视频| 在线播放一区| 亚洲国产精品一区二区第四页av| 美女国内精品自产拍在线播放| 在线观看视频亚洲| 欧美激情亚洲视频| 欧美日韩亚洲免费| 亚洲欧美韩国| 欧美伊人精品成人久久综合97 | 在线观看日韩国产| 鲁大师成人一区二区三区| 美女免费视频一区| 亚洲裸体视频| 一区二区电影免费观看| 国产精品一区二区欧美| 久久久久国产精品一区三寸| 久久精品一区二区三区四区 | 亚洲国产精品va| 亚洲精品一区二区三| 国产精品女主播| 欧美高清视频免费观看| 欧美—级a级欧美特级ar全黄| 亚洲视频一二| 欧美一区午夜精品| 亚洲人午夜精品| 亚洲一区二区三区视频| 激情成人中文字幕| 亚洲区在线播放| 国产日韩成人精品| 亚洲国产精品一区二区第四页av| 国产精品久久97| 欧美黑人一区二区三区| 欧美午夜不卡在线观看免费 | 国产亚洲欧洲一区高清在线观看| 免费av成人在线| 欧美日韩美女在线| 玖玖国产精品视频| 国产精品大片wwwwww| 欧美aaa级| 国产精品亚洲一区| 亚洲日本成人| 一区二区亚洲| 午夜精彩国产免费不卡不顿大片| 亚洲人体大胆视频| 久久久噜噜噜久久人人看| 亚洲欧美www| 欧美精品在线观看| 欧美电影在线观看| 国产欧美在线观看一区| 99精品国产在热久久下载| 亚洲国产精品热久久| 欧美一级淫片播放口| 亚洲图片自拍偷拍| 欧美精品一区二区三区高清aⅴ| 久久久精品一区| 国产喷白浆一区二区三区| 在线视频一区观看| 一区二区av| 欧美—级a级欧美特级ar全黄| 女女同性精品视频| 激情成人中文字幕| 香蕉亚洲视频| 久久精品国产一区二区三区免费看| 欧美日韩在线视频一区| 亚洲精品视频在线观看网站| 亚洲电影av| 麻豆精品一区二区综合av| 久久天天躁狠狠躁夜夜av| 国产欧美日韩免费| 午夜欧美精品| 久久精品国产精品亚洲综合| 国产精品电影在线观看| 99综合在线| 亚洲在线国产日韩欧美| 国产精品高潮视频| 亚洲一区亚洲二区| 亚洲欧美三级在线| 国产永久精品大片wwwapp| 久久国产夜色精品鲁鲁99| 久久在线精品| 亚洲精品一二三区| 欧美日韩国产一区二区三区| 亚洲精品视频免费观看| 亚洲一区二区在线看| 国产精品久久久久久久久久尿| 国产精品99久久久久久久vr| 亚洲欧美卡通另类91av| 国产午夜精品在线| 久久亚洲春色中文字幕| 91久久精品国产91久久性色| 日韩一级在线| 国产精品一区二区三区免费观看| 欧美在线一二三区| 欧美激情精品久久久久久黑人 | 99精品视频免费在线观看| 欧美日韩一区二区三区视频| 国内揄拍国内精品久久| 亚洲国产精品久久久久婷婷老年| 亚欧成人在线| 免费一区二区三区| 亚洲精品免费网站| 国产精品久久久久毛片大屁完整版 | 欧美美女视频| 亚洲综合色自拍一区| 久久久国际精品| 亚洲激情中文1区| 国产精品mm| 久久免费黄色| 亚洲视频在线观看网站| 免费观看一区| 亚洲午夜精品久久久久久app| 国产一二三精品| 欧美日韩精品福利| 久久精品一二三区| 日韩写真在线| 欧美成人四级电影| 性刺激综合网| 亚洲精品孕妇| 国内揄拍国内精品少妇国语| 欧美日韩国产色视频| 久久久久免费| 亚洲免费视频网站| 亚洲人成在线播放| 麻豆精品视频| 欧美一区二区三区视频在线观看| 最新69国产成人精品视频免费| 国产精品综合av一区二区国产馆| 欧美国产日韩一区二区在线观看| 性色av香蕉一区二区| 亚洲网站啪啪| 日韩视频免费在线| 欧美多人爱爱视频网站| 久久久亚洲国产天美传媒修理工|