understanding_strict_aliasing

understanding_strict_aliasing

ID:39991131

大小:345.54 KB

页数:27页

时间:2019-07-16

understanding_strict_aliasing_第1页
understanding_strict_aliasing_第2页
understanding_strict_aliasing_第3页
understanding_strict_aliasing_第4页
understanding_strict_aliasing_第5页
资源描述:

《understanding_strict_aliasing》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、UnderstandingStrictAliasingALIASINGOnepointerissaidtoaliasanotherpointerwhenbothrefertothesamelocationorobject.Inthisexample,0uint32_t1swap_words(uint32_targ)2{3uint16_t*constsp=(uint16_t*)&arg;4uint16_thi=sp[0];5uint16_tlo=sp[1];67sp[1]=hi;8sp[0]=lo;910return(arg);11}UsingGCC3.4.1andabove

2、,theabovecodewillgeneratewarning:dereferencingtype-punnedpointerwillbreakstrict-aliasingrulesonline3.Thememoryreferredtobyspisanaliasofargbecausetheyrefertothesameaddressinmemory.InC99,itisillegaltocreateanaliasofadifferenttypethantheoriginal.Thisisoftenreferedtoasthestrictaliasingrule.The

3、ruleisenabledbydefaultinGCCatoptimizationlevelsatoraboveO2.Althoughtheaboveexamplewouldcompile,theresultsareundefined.Morethanlikely(很有可能),argwouldbereturnedunchangedbecauseapointertouint16_tcannotbeanaliastoapointertouint32_twhenapplyingthestrictaliasingrule.Dereferencingacastofavariablef

4、romonetypeofpointertoadifferenttypeisusuallyinviolation(违反)ofthestrictaliasingrule.However,havingmultiplerepresentationsofthesamelocationinmemoryisoftenbeneficial.Properlybalancingthecompiler'smemoryoptimizationsandtheprogrammer'soptimizationsbasedonreal-worldcontextanddataisabitofablackar

5、t.Itrequiresanunderstandingofthetradeoffsamongwhat'spermittedbythestandard,what'stherealityofcompilersandthevalueofaparticulartransformationbasedonthearchitectureandthedata.It'sworthitintheendthoughwhentheresultsspeakforthemselves.Alloftheexamplesinthisarticlehavebeentestedwithvariousversi

6、onsofGCC.Althoughyoucanexpectmostoftheexamplestogeneratesimilarresultsacrossthemajorcompilers,programmers'expectationsshouldalwaysbevalidatedforthecompilersandcompilerrevisionsrequired.Readon(继续读下去)fordetailsonthestrictaliasingruleandsomecommonpitfalls.WHATISSTRICTALIASING?Strictaliasingis

7、anassumption,madebytheC(orC++)compiler,thatdereferencingpointerstoobjectsofdifferenttypeswillneverrefertothesamememorylocation(i.e.aliaseachother.)Herearesomebasicexamplesofassumptionsthatmaybemadebythecompilerwhenstrictaliasingisenabled:Pointerstodifferentbui

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
相关文章
更多
相关标签