據我所知,一個彙編程序分爲兩個 - 1)代碼2)數據。 現在,當我們編碼時,在c \ C++上說,代碼被加載到內存中,然後CPU開始執行代碼,一個接一個地執行,作爲彙編程序。 我的問題是: 1.在哪裏存儲c代碼?我的意思是,當我在Visual Studio中運行一個程序時,是將代碼加載到其中的一個 - 堆,堆棧..?因此,內存被虛擬地分割爲堆棧,堆和日期段,但是當CPU執行程序時,作爲彙編程序,它們全部是1個彙編程序,它們具有相同的數據區域,或者它們被形成爲,可以說2或3個程序從一個跳到另一個?堆,堆棧和數據段在同一個彙編程序上嗎?
**讓我添加這個問題,也許它會闡明我的意圖: 當我啓動一個C程序時,代碼(機器指令)被加載到內存中。所以,這是一個彙編程序。但是記憶分裂是如何發生的?我的意思是,不同的存儲器部分(如堆棧,數據段等)如何修改彙編程序?
謝謝,但這不完全是我問的。 – user2162550
@ user2162550更新對您有用嗎?如果不是,那麼您需要尋求哪些附加信息?要理解這些基礎知識,最好的方法就是保持實模式下的內存映射。事情更簡單。 – Jean
「否。沒有跳轉,處理器寄存器指向要執行的下一條指令,其他指向堆棧等。」如果有其他寄存器指向堆棧等。正如你所說,所以有不同的彙編程序,並且CPU確實從一個跳轉到另一個,這不正確嗎? – user2162550