找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1879|回復(fù): 6
收起左側(cè)

閱讀C和指針這本C語言書 運行時的環(huán)境這章,感覺很吃力

[復(fù)制鏈接]
ID:908826 發(fā)表于 2023-7-16 08:18 | 顯示全部樓層 |閱讀模式
在閱讀這本書最后一章:“運行時的環(huán)境”時,感覺很吃力。尤其是堆棧幀布局那一塊,請問一下這一塊需要補充什么理論知識呢?
回復(fù)

使用道具 舉報

ID:883242 發(fā)表于 2023-7-16 17:14 | 顯示全部樓層
《數(shù)據(jù)結(jié)構(gòu)》遞歸那一節(jié)。
回復(fù)

使用道具 舉報

ID:844772 發(fā)表于 2023-7-17 08:28 | 顯示全部樓層
沒看過這本書,一般運行環(huán)境要搞懂,需要計算機原理和數(shù)據(jù)結(jié)構(gòu),還有人專門研究了操作系統(tǒng),我的建議是既然沒學(xué)過那些,就先跳過這些,對你編程沒太大影響。
回復(fù)

使用道具 舉報

ID:712097 發(fā)表于 2023-7-17 09:18 | 顯示全部樓層
理論聯(lián)系實踐,看看有沒有配套例程,實際操作一下會好很多。
回復(fù)

使用道具 舉報

ID:908826 發(fā)表于 2023-7-17 10:01 | 顯示全部樓層
glinfei 發(fā)表于 2023-7-17 08:28
沒看過這本書,一般運行環(huán)境要搞懂,需要計算機原理和數(shù)據(jù)結(jié)構(gòu),還有人專門研究了操作系統(tǒng),我的建議是既然 ...

好的,謝謝您的建議
回復(fù)

使用道具 舉報

ID:155507 發(fā)表于 2023-7-17 11:34 | 顯示全部樓層
在理解C語言中的運行時環(huán)境和堆棧幀布局時,以下是一些相關(guān)的理論知識可能會有所幫助:

1.內(nèi)存模型:了解計算機內(nèi)存的基本組成和工作原理是理解運行時環(huán)境的關(guān)鍵。你可以學(xué)習(xí)關(guān)于內(nèi)存的基礎(chǔ)知識,包括內(nèi)存的地址空間、棧和堆的概念,以及變量和數(shù)據(jù)在內(nèi)存中的存儲方式。

2.堆棧概念:理解堆棧的概念是理解堆棧幀布局的前提。了解堆棧的基本原理,包括棧的先進(jìn)后出(LIFO)特性,以及函數(shù)調(diào)用和返回時堆棧的使用方式。

3.棧(Stack)和堆(Heap):了解堆棧和堆的基本概念對于理解運行時環(huán)境是很重要的。堆棧是一種后進(jìn)先出(LIFO)的數(shù)據(jù)結(jié)構(gòu),用于存儲函數(shù)調(diào)用、局部變量和函數(shù)參數(shù)等。堆則是用于動態(tài)分配內(nèi)存的一種機制,通過函數(shù)如malloc()和free()來管理。

4.函數(shù)調(diào)用和返回:學(xué)習(xí)關(guān)于函數(shù)調(diào)用和返回的過程對于理解堆棧幀布局至關(guān)重要。了解函數(shù)調(diào)用時參數(shù)和局部變量的存儲方式,以及函數(shù)調(diào)用過程中的堆棧操作。

5.函數(shù)調(diào)用棧:了解函數(shù)調(diào)用棧對于理解堆棧幀布局非常重要。函數(shù)調(diào)用棧是用于存儲函數(shù)調(diào)用相關(guān)信息的一種數(shù)據(jù)結(jié)構(gòu),包括函數(shù)的返回地址、參數(shù)、局部變量等。每次函數(shù)調(diào)用時,會在堆棧上創(chuàng)建一個新的堆棧幀(stack frame),用于存儲這些信息。

6.棧指針(Stack Pointer)和幀指針(Frame Pointer):棧指針指向當(dāng)前堆棧幀的頂部,而幀指針指向當(dāng)前函數(shù)堆棧幀的開始位置。了解這兩個指針的作用和用法對于理解堆棧幀布局非常重要。

7.堆棧幀布局:堆棧幀布局是指函數(shù)在堆棧上分配內(nèi)存的方式和布局結(jié)構(gòu)。它包括函數(shù)參數(shù)、局部變量、返回地址以及可能的編譯器生成的其他信息。理解堆棧幀布局對于調(diào)試和理解函數(shù)調(diào)用的內(nèi)部工作原理至關(guān)重要。

8.堆棧幀布局:堆棧幀布局描述了函數(shù)在堆棧中的存儲布局,包括函數(shù)參數(shù)、局部變量、返回地址以及其他與函數(shù)調(diào)用相關(guān)的信息。學(xué)習(xí)堆棧幀布局的組成部分和它們在堆棧中的相對位置,以及如何通過堆棧指針和偏移量來訪問這些數(shù)據(jù)。

9.寄存器的使用:了解寄存器在函數(shù)調(diào)用和返回過程中的使用方式也是理解堆棧幀布局的一部分。學(xué)習(xí)關(guān)于調(diào)用約定和寄存器保存的規(guī)則,以及如何在堆棧幀中存儲和恢復(fù)寄存器的值。

10.調(diào)用約定(Calling Convention):調(diào)用約定是指函數(shù)調(diào)用時如何協(xié)商參數(shù)傳遞、返回值處理以及堆棧管理等的規(guī)則。不同的編譯器和操作系統(tǒng)可能采用不同的調(diào)用約定。了解調(diào)用約定可以幫助你理解在堆棧幀布局中參數(shù)和返回值的傳遞方式。

11.異常處理和堆棧展開:了解異常處理機制和堆棧展開過程對于理解堆棧幀布局的高級概念很重要。學(xué)習(xí)關(guān)于異常處理的基本原理,以及在異常發(fā)生時如何在堆棧中進(jìn)行回溯和恢復(fù)。

以上是一些與理解C語言運行時環(huán)境和堆棧幀布局相關(guān)的理論知識。如果你感到困難,可以查閱更多關(guān)于堆棧、堆棧幀和調(diào)用約定的資料,以及與此相關(guān)的操作系統(tǒng)和編譯器文檔。此外,調(diào)試工具和跟蹤函數(shù)調(diào)用的工具也可以幫助你更好地理解和可視化堆棧幀布局的工作原理。

回復(fù)

使用道具 舉報

ID:123289 發(fā)表于 2023-7-17 16:31 | 顯示全部樓層
當(dāng)你弄懂單片機原理后,C中定義的一切就都明白了。
一定是你根本未懂CPU的結(jié)構(gòu)及運行原理。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表