欢迎来到天天文库
浏览记录
ID:39991131
大小:345.54 KB
页数:27页
时间:2019-07-16
《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
此文档下载收益归作者所有
点击更多查看相关文章~~