什么叫棧幀继效?
就是函數(shù)的調(diào)用環(huán)境。bp和sp中間那一段就是函數(shù)調(diào)用環(huán)境。
在AT&T環(huán)境下棧幀是有點(diǎn)不一樣的:
1讥巡、葉子函數(shù)不會(huì)開辟空間(即減rsp)給局部變量。
葉子函數(shù):sp往上走128個(gè)字節(jié)都是他的區(qū)域"red zone"紅色區(qū)域舔哪,受保護(hù)的欢顷。
2、非葉子函數(shù)才會(huì)開辟空間捉蚤。
3抬驴、總結(jié)
為什么葉子函數(shù)不用做sp減的操作炼七,來開辟一段受保護(hù)的空間?
——因?yàn)槿~子函數(shù)布持,能保證不會(huì)再調(diào)用別的函數(shù)豌拙,能保證堆棧不會(huì)被其他函數(shù)破壞。所以可以隨便往里面放東西题暖。所以sp減不減都可以放東西按傅。可葉子函數(shù)的sp為什么不上去呢胧卤?
——為性能考慮唯绍。
上部分葉子函數(shù)sp不減;下部分非葉子函數(shù)sp減枝誊,減了后最后面還要加回去况芒。所以sp不減性能上有優(yōu)勢(shì),減少了兩條指令
叶撒。
不要小看只少了這兩條指令绝骚,有些函數(shù)調(diào)用非常頻繁,時(shí)時(shí)刻刻都在調(diào)用祠够,少兩條指令压汪,也能帶來性能上很大的提升。
4哪审、混編
4.1 單獨(dú)匯編文件
4.2 嵌入?yún)R編代碼(內(nèi)聯(lián)匯編)
嵌入?yún)R編蛾魄,實(shí)際開發(fā)中沒必要這么干。只是為了看懂有些框架里面嵌入了匯編湿滓。
5滴须、AT&T和arm匯編不一樣的地方只是在于寄存器和指令的名稱,其他都差不多叽奥,暫時(shí)不去碰arm匯編扔水,因?yàn)橐O(shè)計(jì)到很多東西。