CPU眼里的:返回值 | 語(yǔ)言硬傷

超全歸納CPU眼里的:返回值 | 語(yǔ)言硬傷滿滿干貨來(lái)啦!
??目錄
1??介紹
2??解讀
3??驗(yàn)證
4??總結(jié)
一、介紹
?
00:00
?1??世界上還有比函數(shù)返回值、更簡(jiǎn)單、更顧名思義的語(yǔ)法嗎?
2??能寫一個(gè)返回?cái)?shù)組的函數(shù)嗎?
二、解讀
?
00:28
?1??打開(kāi)compiler explorer,寫一個(gè)返回立即數(shù)的函數(shù)

2??寄存器rax,就是用來(lái)傳遞函數(shù)的:返回值

3??再寫一個(gè)返回變量的函數(shù)、返回指針的函數(shù),CPU指令完全相同


4??都是在用寄存器rax向主調(diào)函數(shù)傳遞:返回值

三、驗(yàn)證
?
04:12
?1??寫一個(gè)返回臨時(shí)數(shù)組的函數(shù),作函數(shù)的調(diào)用,打印數(shù)組的第一個(gè)元素,看運(yùn)行結(jié)果

2??隨著函數(shù)的逐層返回,函數(shù)的棧幀會(huì)被就地放棄,但不會(huì)清理內(nèi)存
四、總結(jié)
?
05:34
?1??對(duì)于返回原生的數(shù)據(jù)類型和指針、應(yīng)用類型時(shí),往往會(huì)使用寄存器rax向主調(diào)函數(shù)傳遞返回值

2??對(duì)于返回復(fù)雜數(shù)據(jù)類型,則需要避免返回,棧變量或棧對(duì)象

3??返回值問(wèn)題的本質(zhì):內(nèi)存問(wèn)題

標(biāo)簽: