大音希聲 善言不辯
C++博客
|
首頁(yè)
|
發(fā)新隨筆
|
發(fā)新文章
|
聯(lián)系
|
聚合
|
管理
隨筆:29 文章:3 評(píng)論:82 引用:0
[glibc源碼分析] bzero
void
__bzero (
void
*
s, size_t len);
/**/
/*
將s的前l(fā)en字節(jié)設(shè)為0
思路:先對(duì)齊到4的倍數(shù)的地址上,對(duì)前面的幾B直接賦。然后,每次賦個(gè)32B,剩余湊不夠32B的,
每次賦4B,剩余湊不夠4B的,直接賦
*/
void
__bzero (
void
*
s, size_t len)
{
long
int
dstp
=
(
long
int
) s;
const
op_t zero
=
0
;
if
(len
>=
8
)
{
size_t xlen;
//
處理前面的幾B,直到地址為4的倍數(shù),然后可以每次4B
//
這樣做的原因與結(jié)構(gòu)體對(duì)齊的原因一樣,是為提高讀寫(xiě)數(shù)據(jù)的效率
//
由于len >= 8 ,OPSIZ=4,所以不必?fù)?dān)心len==0
while
(dstp
%
OPSIZ
!=
0
)
//
#define op_t unsigned long int
//
#define OPSIZ (sizeof(op_t))
//
IA-32下是32
{
((
byte
*
) dstp)[
0
]
=
0
;
dstp
+=
1
;
len
-=
1
;
}
//
下面是典型的循環(huán)展開(kāi)以提高效率,每次32B
//
若每次賦一個(gè)4B,程序會(huì)由于跳轉(zhuǎn)太多而打斷cpu流水線,降低效率
//
http://www.lysator.liu.se/c/duffs-device.html
//
關(guān)鍵字:Duff's Device
xlen
=
len
/
(OPSIZ
*
8
);
while
(xlen
!=
0
)
{
((op_t
*
) dstp)[
0
]
=
zero;
((op_t
*
) dstp)[
1
]
=
zero;
((op_t
*
) dstp)[
2
]
=
zero;
((op_t
*
) dstp)[
3
]
=
zero;
((op_t
*
) dstp)[
4
]
=
zero;
((op_t
*
) dstp)[
5
]
=
zero;
((op_t
*
) dstp)[
6
]
=
zero;
((op_t
*
) dstp)[
7
]
=
zero;
dstp
+=
8
*
OPSIZ;
xlen
-=
1
;
}
len
%=
OPSIZ
*
8
;
//
剩余的湊不足8 op_t 的
xlen
=
len
/
OPSIZ;
while
(xlen
!=
0
)
//
每次填4B
{
((op_t
*
) dstp)[
0
]
=
zero;
dstp
+=
OPSIZ;
xlen
-=
1
;
}
len
%=
OPSIZ;
}
while
(len
!=
0
)
//
剩余不夠4B的,直接賦值
{
((
byte
*
) dstp)[
0
]
=
0
;
dstp
+=
1
;
len
-=
1
;
}
}
發(fā)表于 2008-11-27 09:48
霜之哀傷
閱讀(2964)
評(píng)論(0)
編輯
收藏
引用
所屬分類:
C/C++
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
【推薦】100%開(kāi)源!大型工業(yè)跨平臺(tái)軟件C++源碼提供,建模,組態(tài)!
相關(guān)文章:
確保基類有虛析構(gòu)函數(shù)
再次批判 裘宗燕
[glibc源碼分析] bzero
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問(wèn)
Chat2DB
管理
常用鏈接
我的隨筆
我的評(píng)論
我參與的隨筆
留言簿
(9)
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類
C/C++(3)
(rss)
Django(8)
(rss)
Python(9)
(rss)
STL
(rss)
娛樂(lè)(1)
(rss)
隨筆檔案
2009年5月 (2)
2009年4月 (3)
2009年3月 (7)
2009年2月 (1)
2009年1月 (1)
2008年12月 (11)
2008年11月 (4)
文章檔案
2009年3月 (2)
2009年1月 (1)
最新評(píng)論
1.?re: 再次批判 裘宗燕
評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
--hhacker
2.?re: 再次批判 裘宗燕
@孔志強(qiáng)
對(duì)對(duì)對(duì) 這個(gè)我也想說(shuō)呢 話說(shuō)在線應(yīng)該是online阿
--xiaodong
3.?re: 再次批判 裘宗燕
我猜樓主就是特別喜歡”魯棒性“,”幽默“這樣”廣為人知”的翻譯的人。只能遺憾地表示我國(guó)小學(xué)語(yǔ)文教育做得不好。
能做裘老師這樣翻譯技術(shù)書(shū)籍還在追求信、達(dá)、雅的老師的學(xué)生,我只能說(shuō)感到幸運(yùn)
--YangZX
4.?re: 為Django應(yīng)用增加列表顯示功能
感謝,找了好一陣子才找到!
--flow
5.?re: 【W(wǎng)ord小技巧】圖片自動(dòng)編號(hào)與引用
會(huì)出現(xiàn)這樣的錯(cuò)誤
圖 錯(cuò)誤!文檔中沒(méi)有指定樣式的文字。 1
自動(dòng)編號(hào)前必須要先應(yīng)用 多接列表 吧
請(qǐng)回郵件 brucmao#gmail.com
--brucmao
閱讀排行榜
1.?【W(wǎng)ord小技巧】圖片自動(dòng)編號(hào)與引用 (15255)
2.?再次批判 裘宗燕(7041)
3.?為Django應(yīng)用建立數(shù)據(jù)庫(kù)表(database tables)(4808)
4.?穿透內(nèi)網(wǎng)遠(yuǎn)程桌面 (3682)
5.?[glibc源碼分析] bzero (2964)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 霜之哀傷
久久91亚洲人成电影网站
|
国产精品九九久久精品女同亚洲欧美日韩综合区
|
国产精品美女久久久久
|
久久婷婷五月综合国产尤物app
|
久久久久九九精品影院
|
青青青国产成人久久111网站
|
久久精品中文无码资源站
|
色欲久久久天天天综合网精品
|
伊人久久精品影院
|
久久久一本精品99久久精品88
|
一本一本久久a久久精品综合麻豆
|
久久久久国产成人精品亚洲午夜
|
狠狠人妻久久久久久综合蜜桃
|
成人精品一区二区久久
|
久久久综合香蕉尹人综合网
|
久久人人爽人人精品视频
|
日韩中文久久
|
狠狠色丁香久久婷婷综合
|
欧美精品久久久久久久自慰
|
999久久久免费精品国产
|
国产99久久久久久免费看
|
合区精品久久久中文字幕一区
|
久久www免费人成看片
|
精品无码久久久久国产
|
精品久久久久一区二区三区
|
久久久久波多野结衣高潮
|
精品久久久久久久
|
亚洲国产成人精品女人久久久
|
日本WV一本一道久久香蕉
|
精品久久久久久综合日本
|
日日狠狠久久偷偷色综合96蜜桃
|
99久久夜色精品国产网站
|
久久精品国产只有精品2020
|
久久最新免费视频
|
狠狠狠色丁香婷婷综合久久五月
|
国产免费久久精品丫丫
|
久久天天躁狠狠躁夜夜躁2O2O
|
久久av免费天堂小草播放
|
99久久精品国产麻豆
|
久久久久国产精品嫩草影院
|
亚洲狠狠久久综合一区77777
|