找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

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

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

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

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

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

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

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

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

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

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

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

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

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

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

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

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

回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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