第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么堆棧通常會(huì)向下生長(zhǎng)?

為什么堆棧通常會(huì)向下生長(zhǎng)?

我知道在我個(gè)人熟悉的體系結(jié)構(gòu)(x86、6502等)中,堆棧通常會(huì)向下增長(zhǎng)(即,推入堆棧的每個(gè)項(xiàng)目都會(huì)導(dǎo)致SP遞減,而不是遞增的SP)。我想知道這樣做的歷史依據(jù)。我知道,在統(tǒng)一的地址空間中,在數(shù)據(jù)段的另一端啟動(dòng)堆棧很方便(例如),因此,如果兩側(cè)在中間碰撞,則只會(huì)有問題。但是,為什么傳統(tǒng)上堆棧會(huì)占據(jù)頂部呢?特別是考慮到這與“概念”模型相反的情況?(請(qǐng)注意,在6502架構(gòu)中,即使堆棧綁定到單個(gè)256字節(jié)的頁面,堆棧也向下增長(zhǎng),并且這種方向選擇似乎是任意的。)
查看完整描述

3 回答

?
暮色呼如

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊

至于歷史的基本原理,我不能確定地說(因?yàn)槲覜]有設(shè)計(jì)它們)。我對(duì)此的想法是,早期的CPU會(huì)將其原始程序計(jì)數(shù)器設(shè)置為0,并且很自然地希望在另一端啟動(dòng)堆棧并向下擴(kuò)展,因?yàn)樗鼈兊拇a自然會(huì)向上擴(kuò)展。


另外,請(qǐng)注意,并非所有早期的CPU 都將復(fù)位時(shí)將程序計(jì)數(shù)器設(shè)置為0 。例如,Motorola 6809將從地址中讀取程序計(jì)數(shù)器,0xfffe/f以便您可以在任意位置開始運(yùn)行,具體取決于該地址提供的內(nèi)容(通常但絕不限于ROM)。


歷史系統(tǒng)將要做的第一件事是從頂部開始掃描內(nèi)存,直到找到一個(gè)位置,該位置將回讀相同的寫入值,以便它知道實(shí)際安裝的RAM(例如,具有64K地址空間的z80不一定有64K或RAM,實(shí)際上64K 在我早期很龐大。一旦找到最上面的實(shí)際地址,它將適當(dāng)?shù)卦O(shè)置堆棧指針,然后可以開始調(diào)用子例程。作為啟動(dòng)的一部分,這種掃描通常由ROM中的CPU運(yùn)行代碼完成。


查看完整回答
反對(duì) 回復(fù) 2019-10-26
?
繁花不似錦

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊

一個(gè)可能的原因可能是它簡(jiǎn)化了對(duì)齊。如果在堆棧上放置一個(gè)必須放在4字節(jié)邊界上的局部變量,則可以簡(jiǎn)單地從堆棧指針中減去對(duì)象的大小,然后將兩個(gè)低位清零以獲得正確對(duì)齊的地址。如果堆棧向上生長(zhǎng),則確保對(duì)齊變得有些棘手。


查看完整回答
反對(duì) 回復(fù) 2019-10-26
?
森林海

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊

再加2分:

除了提到的所有歷史依據(jù)外,我敢肯定,沒有理由在現(xiàn)代處理器中是有效的。所有處理器都可以采用帶符號(hào)的偏移量,并且自從我們開始處理多個(gè)線程以來,最大程度地提高堆/堆棧距離就沒有什么意義。

我個(gè)人認(rèn)為這是安全設(shè)計(jì)缺陷。如果說x64體系結(jié)構(gòu)的設(shè)計(jì)者會(huì)改變堆棧的增長(zhǎng)方向,那么大多數(shù)堆棧緩沖區(qū)溢出將被消除-這是很大的事情。(因?yàn)榍傧蚁蛏仙L(zhǎng))。


查看完整回答
反對(duì) 回復(fù) 2019-10-26
  • 3 回答
  • 0 關(guān)注
  • 1412 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)