大音希聲 善言不辯
C++博客
|
首頁
|
發新隨筆
|
發新文章
|
聯系
|
聚合
|
管理
隨筆:29 文章:3 評論:82 引用:0
[glibc源碼分析] bzero
void
__bzero (
void
*
s, size_t len);
/**/
/*
將s的前len字節設為0
思路:先對齊到4的倍數的地址上,對前面的幾B直接賦。然后,每次賦個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的倍數,然后可以每次4B
//
這樣做的原因與結構體對齊的原因一樣,是為提高讀寫數據的效率
//
由于len >= 8 ,OPSIZ=4,所以不必擔心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
;
}
//
下面是典型的循環展開以提高效率,每次32B
//
若每次賦一個4B,程序會由于跳轉太多而打斷cpu流水線,降低效率
//
http://www.lysator.liu.se/c/duffs-device.html
//
關鍵字: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
;
}
}
發表于 2008-11-27 09:48
霜之哀傷
閱讀(2953)
評論(0)
編輯
收藏
引用
所屬分類:
C/C++
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
確保基類有虛析構函數
再次批判 裘宗燕
[glibc源碼分析] bzero
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(9)
給我留言
查看公開留言
查看私人留言
隨筆分類
C/C++(3)
(rss)
Django(8)
(rss)
Python(9)
(rss)
STL
(rss)
娛樂(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)
最新評論
1.?re: 再次批判 裘宗燕
評論內容較長,點擊標題查看
--hhacker
2.?re: 再次批判 裘宗燕
@孔志強
對對對 這個我也想說呢 話說在線應該是online阿
--xiaodong
3.?re: 再次批判 裘宗燕
我猜樓主就是特別喜歡”魯棒性“,”幽默“這樣”廣為人知”的翻譯的人。只能遺憾地表示我國小學語文教育做得不好。
能做裘老師這樣翻譯技術書籍還在追求信、達、雅的老師的學生,我只能說感到幸運
--YangZX
4.?re: 為Django應用增加列表顯示功能
感謝,找了好一陣子才找到!
--flow
5.?re: 【Word小技巧】圖片自動編號與引用
會出現這樣的錯誤
圖 錯誤!文檔中沒有指定樣式的文字。 1
自動編號前必須要先應用 多接列表 吧
請回郵件 brucmao#gmail.com
--brucmao
閱讀排行榜
1.?【Word小技巧】圖片自動編號與引用 (15235)
2.?再次批判 裘宗燕(7015)
3.?為Django應用建立數據庫表(database tables)(4798)
4.?穿透內網遠程桌面 (3676)
5.?[glibc源碼分析] bzero (2953)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 霜之哀傷
亚洲乱码中文字幕久久孕妇黑人
|
久久久久久亚洲精品成人
|
国产成人久久777777
|
国产精品综合久久第一页
|
中文字幕久久亚洲一区
|
久久大香香蕉国产
|
久久久国产一区二区三区
|
久久精品卫校国产小美女
|
91久久精品91久久性色
|
亚洲国产成人精品久久久国产成人一区二区三区综
|
伊色综合久久之综合久久
|
久久久无码精品亚洲日韩蜜臀浪潮
|
一本大道久久a久久精品综合
|
久久只这里是精品66
|
久久99国产精品99久久
|
午夜精品久久久久久
|
国产精品久久久久影院嫩草
|
久久影视综合亚洲
|
国产精品久久久久乳精品爆
|
亚洲αv久久久噜噜噜噜噜
|
国产精品综合久久第一页
|
一本久道久久综合狠狠爱
|
久久久久久噜噜精品免费直播
|
77777亚洲午夜久久多喷
|
久久久亚洲AV波多野结衣
|
久久久久国产精品麻豆AR影院
|
AV狠狠色丁香婷婷综合久久
|
亚洲精品国产自在久久
|
久久青青草原精品国产不卡
|
久久久久久免费一区二区三区
|
色欲综合久久中文字幕网
|
久久亚洲精品成人无码网站
|
99久久精品费精品国产一区二区
|
亚洲级αV无码毛片久久精品
|
久久久这里有精品
|
久久久国产99久久国产一
|
亚洲国产成人久久一区WWW
|
日韩精品无码久久一区二区三
|
91亚洲国产成人久久精品网址
|
国产午夜福利精品久久2021
|
久久99国产精一区二区三区
|